我有两个大数据框,一个(df1)有这个结构
V1 V2 V3
1 Chr1 7507 10944
2 Chr1 10944 13170
3 Chr1 13170 20065
4 Chr1 20065 28273
5 Chr1 28273 29960
6 Chr1 29960 36599
7 Chr1 36599 37513
8 Chr1 37513 40360
9 Chr1 40360 48796
10 Chr1 48796 50661
另一个(df2)有这个
V1 V2 V3 V4 V5
1 Chr1 7507 7507 1 1
2 Chr1 10944 10944 1 2
3 Chr1 13170 13170 1 22
4 Chr1 20065 20065 1 3
5 Chr1 28273 28273 1 161
6 Chr1 29960 29960 1 10
7 Chr1 36599 36599 1 604
8 Chr1 37513 37513 1 117
9 Chr1 40360 40360 1 8
10 Chr1 48796 48796 1 3
我要做的是检查df2的列V2或V3(是否相同)是否=或者在df1的V2和V3的范围之间然后我想要写入df2的V5的值如果不写0,则df1中的新列。我想要的结果如下:
Chr1 7507 10944 1
Chr1 10944 13170 2
Chr1 13170 20065 22
Chr1 20065 28273 3
Chr1 28273 29960 161
Chr1 29960 36599 10
Chr1 36599 37513 604
Chr1 37513 40360 117
Chr1 40360 48796 8
.
.
.
你知道有什么好办法吗? 非常感谢你。
答案 0 :(得分:0)
正如@beginneR在评论中已经提到的,V2
的所有V3
和df2
值都与V2
的{{1}}完全匹配。如果我正确地解释你的问题,这可能不是你想要的。以下示例是我想要的内容。
阅读两个数据帧:
df1
在df2中删除V3,因为它与V2完全相同:
df1 <- read.table(header=TRUE, text="rn V1 V2 V3
1 Chr1 7507 10944
2 Chr1 10944 13170
3 Chr1 13170 20065
4 Chr1 20065 28273
5 Chr1 28273 29960
6 Chr1 29960 36599
7 Chr1 36599 37513
8 Chr1 37513 40360
9 Chr1 40360 48796
10 Chr1 48796 50661")
df2 <- read.table(header=TRUE, text="rn V1 V2 V3 V4 V5
1 Chr1 7507 7507 1 1
2 Chr1 10944 10944 1 2
3 Chr1 13170 13170 1 22
4 Chr1 20065 20065 1 3
5 Chr1 28273 28273 1 161
6 Chr1 29960 29960 1 10
7 Chr1 36599 36599 1 604
8 Chr1 37513 37513 1 117
9 Chr1 40360 40360 1 8
10 Chr1 48796 48796 1 3")
使df2的V2值更高
df2 <- df2[,-4]
使用df2$V2 <- df2$V2 + 2000
功能,当满足要求时,您可以将d5的值分配给df1中的新变量:
ifelse