【发布时间】:2018-05-21 10:12:24
【问题描述】:
假设我有两个数据框,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_y$int_area 和df_y$count 创建列df_x$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*, count, value = c(2L, NA, 6L, 5L, : 替换有497行,数据有57599
非常感谢任何有关如何进行的帮助。
【问题讨论】:
-
我认为这是一个合并(或“左连接”) -
merge(df_x, df_y, all.x=TRUE)做你想做的事吗?尽管尝试合并具有多个小数位的数字可能是可疑的。