我使用的数据集中填充了无理数和NA。样本可以在下面找到
>head(df, n=5)
cheading1 cheading2 cheading1 cheading3 cheading1 cheading1
1 1.0925485 NA 0.714186 NA 0.008650 NA
2 1.0564646 NA 0.714286 NA 0.008651 NA
3 0.9816899 NA 0.714186 NA 0.008652 NA
4 0.9857995 NA 0.714186 NA 0.008651 NA
5 0.9760769 NA 0.714086 NA 0.011350 NA
> dim(df)
[1] 16500 199
请不要假设示例中的列代表相同数据类型的连续流。随着行号增加,column1变为填充NA,其他列以相同的方式起作用。所有列都有无理数和NA内部。此数据框中到处都有零
因此,当然,当我尝试获取整个数据集的自然日志时,由于非数字值而返回错误" NA"
log(df, base=exp(1))
> Error in Math.data.frame(df, base = exp(1)) : non-numeric variable
> in data frame: cheading2
我尝试使用删除工具尝试告诉R在执行所有数值的自然日志时排除NA,但又返回错误。
log(df, base=exp(1), na.rm=T)
> Error in log(df, base = exp(1), na.rm = T) : unused argument (na.rm
> = TRUE)
那么如何获取整个数据框的自然日志(使用列标题),忽略所有NA并与另一个表结果,例如: lndf还有它的标题和NA?
我也试过使用for循环,但结果相同。 (生产的NANs太多)
我计划在解决此问题后在固定效果回归中使用此数据。我希望能够回答可能出现的任何问题。
还尝试记录每个数字列的日志然后将它们组合起来。仍然不起作用。
lnoecd<- log(df$oecd, base=exp(1))
lng20<- log(df$g20, base=exp(1))
lnoecdna<- log(df$oecdna, base=exp(1))
lnifscode<- log(df$ifscode, base=exp(1))
lnccode<- log(df$ccode, base=exp(1))
lnyear<- log(df$year, base=exp(1))
lnoxfx<- log(df$oxfx, base=exp(1))
lnncusd2011<- log(df$ncusd2011, base=exp(1))
lnncppp2005<- log(df$ncppp2005, base=exp(1))
...
...
lndf <- c(lnoecd, ...the lot
每当我获取任何数字列的日志然后查看已编辑列的维度时,只返回NULL
注意:非常新的编程,并开始使用R作为一只脚。对任何可能缺乏琐碎知识的事先道歉。我希望那些试图帮助我的人会对我遇到的情况感到满意。