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 以下是我尝试过的: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 &
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必须提供数据,以便我们在这种情况下使用。