【发布时间】:2018-04-17 08:55:07
【问题描述】:
我有一个如下的数据框(dt)
companimal refanimal X studyday
b10 b1 2 1
b10 b1 9 2
b10 b1 4 3
b10 b1 4 4
b10 b1 11 5
b10 b2 1 1
b10 b2 1 2
b10 b2 20 3
b10 b2 12 4
b10 b2 16 5
b10 b3 9 1
b10 b3 2 2
b10 b3 17 3
b10 b3 22 4
b10 b3 1 5
b10 b4 13 1
b10 b4 17 2
b10 b4 9 3
b10 b4 7 4
b10 b4 19 5
和第二个数据帧(dt2)如下
animal lastday
b1 5
b2 3
b3 4
b4 3
我想通过 dt 并只保留 dt$refanimal = dt2$animal & dt$study day
即
companimal refanimal X studyday
b10 b1 2 1
b10 b1 9 2
b10 b1 4 3
b10 b1 4 4
b10 b1 11 5
b10 b2 1 1
b10 b2 1 2
b10 b2 20 3
b10 b3 9 1
b10 b3 2 2
b10 b3 17 3
b10 b3 22 4
b10 b4 13 1
b10 b4 17 2
b10 b4 9 3
我觉得它应该很简单,但我无法解决。
我尝试过如下循环
for (i in 1:nrow(dt)){
check = dt[i,]
for (j in 1:nrow(dt2)){
check2 = dt2[j,]
if(check$refanimal == check2$animal & check$studyday <=
check2$lastday){
dt$tmp == 1
} else {
dt$tmp == "NA"
}
希望我能在原始 dt 中获得另一列 1 和 NA,然后我可以过滤掉,但这不起作用。我意识到可能有比这更好的方法,但我就是做不到解决它。
谢谢
【问题讨论】:
标签: r dataframe data-manipulation