我有一个数据框,其中包含以下列:树ID,月,值 . 几个月来,没有记录数据,因此数据框中不存在这些月份 . 我已经完成了缺少月份的列表,但现在我不知道如何在增加的月份的值列中插入NA .
例:
Tree.Id :1,2,3,4,5,6,7,8,9,10 Month :Jan,Feb,Mar,May,Jun,Jul,Sept,Oct,Nov,Dec Values :1,0,1, 1,0,2,1,1,0,2
缺少以下几个月:4月,8月,我用下面的代码添加了它们,现在我想要在增加的2个月中在值列中引入NA .
这是我尝试过的:
tree_ls <- list()
for (i in unique(data$Tree.ID)){
mon1 <- data$month[data$Tree.ID == i] ### extract the month for every Tree iD
mon <- min(mon1, na.rm=T):max(mon1, na.rm=T) # completes the numbers with the missing month
dat1 <- data$value[data$Tree.ID == i]
......
在此步骤之后,我不知道如何创建一个列表,该列表将为缺少的所有已添加月份添加NA,因此我将具有相同长度的列表 .
谢谢
2 回答
这是一个老帖子,但我有一个非常好的解决方案:
首先,您的小型可重现代码应该如下:
现在只需简单介绍一下您所在域名的完整列表,例如您想要获取NA的月份 .
现在我们有一个包含所有基础值的列,因此当我们合并时,我们可以使用以下语法将缺少的行填充为NA:
我们的结果如下:
希望这会有所帮助,数据争论很糟糕 .
如果你说
data frame
有几个月"no recorded data"因此"do not exist",那么他们在data frame
中的事实就意味着他们有一些代表性 . 我猜你的意思是"do not exist"你的意思是它们是空字符串,比如""
. 如果是这种情况,您可以使用dplyr
包中的mutate
和基础包中的ifelse
替换NA
值的空白字符串,如下所示:其内容为“更改
data
data frame
,以便value
单元格被NA
替换,如果它们是空白字符串,或保持不变 . ”