R 如何使用列表中的Na完成缺少的值?

R 如何使用列表中的Na完成缺少的值?,r,na,R,Na,我有一个包含以下列的数据框:树ID、月、值。有些月份没有记录数据,因此数据框中不存在这些月份。我已经完成了缺少月份的列表,但现在我不知道如何在增加月份的值列中插入NA 例如: Tree.Id:1,2,3,4,5,6,7,8,9,10 月份:一月、二月、三月、五月、六月、七月、九月、十月、十一月、十二月 值:1,0,1,1,0,2,1,1,0,2 接下来的几个月不见了:4月,8月, 我用下面的代码添加了它们,现在我想在这两个月的时间里在value列中引入NA 以下是我尝试过的: tree_ls &

我有一个包含以下列的数据框:树ID、月、值。有些月份没有记录数据,因此数据框中不存在这些月份。我已经完成了缺少月份的列表,但现在我不知道如何在增加月份的值列中插入NA

例如:

Tree.Id:1,2,3,4,5,6,7,8,9,10 月份:一月、二月、三月、五月、六月、七月、九月、十月、十一月、十二月 :1,0,1,1,0,2,1,1,0,2

接下来的几个月不见了:4月,8月, 我用下面的代码添加了它们,现在我想在这两个月的时间里在value列中引入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]
......

tree\u ls当你说你有一个
数据框
,其中一些月份“没有记录的数据”,因此“不存在”,事实上它们在
数据框
中,这意味着它们具有某种代表性。我猜“不存在”的意思是它们是空白字符串,例如
”。如果是这样的话,可以在代码< > dPLYR 包和<代码> IFOR/<代码>中,使用<代码> nA/CODE >值替换<代码> n>代码>值:
library(dplyr);
data_with_nas <- mutate(data, value = ifelse(value=="", NA, value));
   month id value
1    Dec 10     2
2    Feb  2     0
3    Jan  1     1
4    Jul  6     2
5    Jun  5     0
6    Mar  3     1
7    May  4     1
8    Nov  9     0
9    Oct  8     1
10  Sept  7     1
11   Apr NA    NA
12   Aug NA    NA
库(dplyr);

data_with_nas这是一篇老文章,但我有一个很好的解决方案:

首先,您的小型可复制代码可能如下所示:

month <- c(Jan, Feb, Mar, May, Jun, Jul, Sept, Oct, Nov, Dec)
value <- c(1,0,1,1,0,2,1,1,0,2)
df <- data.frame(id=id, month=month,value=value)
> head(df)
  id month value
1  1   Jan     1
2  2   Feb     0
3  3   Mar     1
4  4   May     1
5  5   Jun     0
6  6   Jul     2
我们的结果如下:

library(dplyr);
data_with_nas <- mutate(data, value = ifelse(value=="", NA, value));
   month id value
1    Dec 10     2
2    Feb  2     0
3    Jan  1     1
4    Jul  6     2
5    Jun  5     0
6    Mar  3     1
7    May  4     1
8    Nov  9     0
9    Oct  8     1
10  Sept  7     1
11   Apr NA    NA
12   Aug NA    NA

希望这有帮助,数据争论很糟糕。

如果您能提供一个最小的可重复的例子来回答您的问题,那就太好了。我们可以利用它来向您展示如何回答您的问题。这样,其他人也可以在将来适合你的问题和相应的答案。你可以看看如何在R中创建一个很好的可复制的示例。我很确定你可以通过合并/连接操作实现你的实际目标。也许我错了,但我认为OP所说的是,当给定月份没有记录任何数据时,该月份就没有列。因此,这不仅仅是用NAs在列中填充空白。很难说,是的。我说的是OP的第一句话,“我有一个数据框,它有以下列:树ID,月,值”,这似乎暗示了一个3列
数据框,其中分别有月和值列。我的猜测可能是错的。OP必须提供数据,以便我们在这种情况下使用。