我试图找到一种基于数据框中的条件添加行的方法。我基本上想要一个数据框并插入缺少的值。以下是我的开始:
Plot Species Status
1A ABBI L
1A PIEN D
1B ABBI D
1B PIEN L
2A ABBI L
我希望能够在Plot列中搜索1A,2B和3A。由于存在1A,因此不会有动作,但2B和2B将被添加到数据帧中。对于缺失值,我将始终要输入绘图编号,并为其他所有内容输入0。最终结果如下:
Plot Species Status
1A ABBI L
1A PIEN D
1B ABBI D
1B PIEN L
2A ABBI L
2B 0 0
3A 0 0
答案 0 :(得分:1)
使用merge
:
df <- read.table(text="Plot Species Status
1A ABBI L
1A PIEN D
1B ABBI D
1B PIEN L
2A ABBI L", header=TRUE, stringsAsFactors=FALSE)
lookfor <- data.frame(Plot=c("1A", "2B", "3A"), stringsAsFactors=FALSE)
res <- merge(df,lookfor,all=TRUE)
res[is.na(res$Species), c("Species", "Status")] <- 0
print(res)
# Plot Species Status
# 1 1A ABBI L
# 2 1A PIEN D
# 3 1B ABBI D
# 4 1B PIEN L
# 5 2A ABBI L
# 6 2B 0 0
# 7 3A 0 0
但是,您应该考虑使用NA
代替0
来表示遗漏。