Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 根据分组数据评估的条件替换缺少的值_R_Dataframe - Fatal编程技术网

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谢谢。你能试试更新的版本,看看它是否有效吗?