如何解决R for循环if语句从第二个df打印值
我在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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。