【发布时间】:2014-11-27 17:18:02
【问题描述】:
我的数据看起来像这样
bankname bankid year deposit dep_cert capital surplus
Bank A 1 1881 244789 7250 20218 29513
Bank B 2 1881 195755 10243 185151 NA
Bank C 3 1881 107736 13357 177612 NA
Bank D 4 1881 170600 NA 20000 NA
Bank E 5 1881 320000 351266 314012 NA
这是复制数据的代码。
bankname <- c("Bank A","Bank B","Bank C","Bank D","Bank E")
bankid <- c( 1, 2, 3, 4, 5)
year<- c( 1881, 1881, 1881, 1881, 1881)
deposit <- c(244789, 195755, 107736, 170600, 32000000)
dep_cert<-c(7250,10243,13357,NA,351266)
capital<-c(20218,185151,177612,20000,314012)
surplus<-c(29513,NA,NA,NA,NA)
bankdata<-data.frame(bankname, bankid,year,deposit, dep_cert, capital, surplus)
我想创建一个名为liability 的新列作为deposit、dep_cert、capital 和surplus 的总和。这意味着数据将如下所示。
bankname bankid year deposit dep_cert capital surplus liability
Bank A 1 1881 244789 7250 20218 29513 301770
Bank B 2 1881 195755 10243 185151 NA 391149
Bank C 3 1881 107736 13357 177612 NA 298705
Bank D 4 1881 170600 NA 20000 NA 190600
Bank E 5 1881 320000 351266 314012 NA 32665278
但是,当我在 R 中使用 sum 命令时,由于缺少值,我得到了 NA。在Stata,我会这样做
egen liability = rowtotal(deposit, dep_cert,capital, surplus)
R 中的等效代码是什么?
另外,我的第二个问题是,用数据中的数字 0 替换所有缺失值 (NA),在 Stata 中,我会这样做
foreach x of varlist deposit dep_cert capital surplus {
replace `x'=0 if missing(`x')
}
R 中的等效代码是什么?
【问题讨论】: