根据在线条件向数据框添加行

时间:2013-09-13 07:44:20

标签: r dataframe

我试图找到一种基于数据框中的条件添加行的方法。我基本上想要一个数据框并插入缺少的值。以下是我的开始:

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

1 个答案:

答案 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来表示遗漏。