问题描述
我在df1中有一个要打印到df2中的值,但它们的行数不均匀
我正在考虑使用的那种代码类似
for(i in 1:dim(df1)[1]){
df2$INT[if(df1$SN == df2$SN)
{df1$INT[1]}
]}
但是我只是吐出错误,我对for循环不太熟悉
df1
SN ... INT
1 0.015
2 0.01891
3 0.0208
4 ...
5 ...
df2
... SN INT
... 1 NA
... 1 NA
... 2 NA
... 3 NA
... 3 NA
... ... ...
df_OUTPUT
... SN INT
... 1 0.015
... 1 0.015
... 2 0.01891
... 3 0.0208
... 3 0.0208
... ... ...
解决方法
听起来像您想要做的是将基于SN
列的两个表连接起来。我假设在df2
中,整个INT
列都是NA
值,可以删除。
Base R解决方案
# drop INT from df2
df2 <- df2[-2]
# join based on SN column
merge(df1,df2)
#-----
SN INT
1 1 0.01500
2 1 0.01500
3 2 0.01891
4 3 0.02080
5 3 0.02080
dplyr
解决方案
library(dplyr)
df2 %>%
select(-INT) %>%
left_join(df1)
#----
Joining,by = "SN"
SN INT
1 1 0.01500
2 1 0.01500
3 2 0.01891
4 3 0.02080
5 3 0.02080
# Create dummy data
df1 <- data.frame(SN = 1:3,INT = c(0.015,0.01891,0.0208))
df2 <- data.frame(SN = c(1,1,2,3,3),INT = NA)