R 根据分组数据评估的条件替换缺少的值
我有一个很大的数据框,其中有R 根据分组数据评估的条件替换缺少的值,r,dataframe,R,Dataframe,我有一个很大的数据框,其中有Year、Exporter、Importer和TradeValue列 “年份”列包含表示年份(1970-2010)的整数。“出口商”和“进口商”列包含代表大约150个国家(“美国”、“加拿大”、“GBR”等)的字符串。TradeValue列包含数字和NAs的混合 对于每年的每个出口国,我希望将贸易价值的所有NAs替换为零,但前提是至少有一行贸易价值的非NA值(对于该年的出口国) 感谢您的帮助 编辑: > dput(head(df)) structure(lis
Year、
Exporter
、Importer
和TradeValue
列
“年份”列包含表示年份(1970-2010)的整数。“出口商”和“进口商”列包含代表大约150个国家(“美国”、“加拿大”、“GBR”等)的字符串。TradeValue列包含数字和NAs的混合
对于每年的每个出口国,我希望将贸易价值的所有NAs替换为零,但前提是至少有一行贸易价值的非NA值(对于该年的出口国)
感谢您的帮助
编辑:
> dput(head(df))
structure(list(Year = c(1970L, 1970L, 1970L, 1970L, 1970L, 1970L
), Exporter = c("Afghanistan", "Afghanistan", "Afghanistan",
"Afghanistan", "Afghanistan", "Afghanistan"), Importer =
c("Afghanistan",
"Albania", "Algeria", "American Samoa", "Andorra", "Angola"),
TradeValue = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_)), row.names = c("1", "2", "3", "4", "5", "6"), class =
"data.frame")
使用
dplyr
您可以按年份和导出者对U进行分组,如果组中存在任何非NA交易价值,则将NA
替换为0
library(dplyr)
df %>%
group_by(Year, Exporter) %>%
mutate(TradeValue = if (any(!is.na(TradeValue)))
replace(TradeValue, is.na(TradeValue), 0) else TradeValue)
谢谢你。运行此代码将导致错误消息:错误:不兼容类型(NULL),应为numeric@markdavis你能用dput(head(df))更新你的帖子吗。如果没有可复制的示例,很难进行调试。@markdavis谢谢。你能试试更新的版本,看看它是否有效吗?