假设我有两个数据框df_y
和df_x
df_y <- data.frame(int_area = c(0.00503201, 0.66491063, 1.40633472, 2.76595972,
3.38315429, 3.38842563, 4.43895167, 6.85371330, 10.17257506, 17.27029774),
count=c(2,3,6,5,6,5,3,5,1,1))
df_x <- data.frame(int_area = c(0.00503201, 0.66491063, 1.40633472, 2.76595972,
3.38315429, 3.38842563, 4.43895167, 6.85371330, 10.17257506, 17.27029774)
我想根据df_x$count
和df_y$int_area
创建列df_y$count
。像
if df_y$int_area = df_x$int_area then df_x$count = df_x$count.
我尝试使用ifelse
:
df_x$count = ifelse(df_y$int_area == df_x$int_area, df_y$count, NA)
但是我收到以下错误消息:
警告讯息: 在int_area $ int_area == y $ int_area: 较长的物体长度不是较短物体长度的倍数
然后我尝试使用%in%
而不是==但是我收到了这个错误:
$<-.data.frame
中的错误(*tmp*
,计数,值= c(2L,NA,6L,5L,: 替换有497行,数据有57599
非常感谢有关如何进行的任何帮助。
答案 0 :(得分:0)
library(dplyr)
df_x <- df_x %>% left_join(df_y, by = c('int_area' = 'int_area'))
> df_x
int_area count
1 0.00503201 2
2 0.66491063 3
3 1.40633472 6
4 2.76595972 5
5 3.38315429 6
6 3.38842563 5
7 4.43895167 3
8 6.85371330 5
9 10.17257506 1
10 17.27029774 1