r - 将数字添加到数据帧中的所有零并进行对数转换
问题描述
我有一个看起来像这样的数据框:
df1 <- structure(list(Name = c("Mark", "Anders", "Tom", "Vin", "Marcel",
"Tyta", "Gerta", "Moses", "Hank", "Rita", "Margary"), Col = c(1769380097.5,
1444462500, 1499146687.5, 1276309375, 22279500, 3114023471, 2961012500,
3978937423.5, 1703925000, 1838885550, 0), item1 = c(1534931323.07692,
1794881375, 2292661687.5, 855786250, 21915500, 3056061512.25,
3581940000, 3766909703.25, 2043300000, 2135859875, 1482031250
), item2 = c(1628137500, 1781982737.5, 1659391250, 741220687.5,
41242000, 2833327766.38514, 3675450000, 3592650662.5, 1586512500,
1934575000, 1467271250), item3 = c(1545572702.88461, 1748600000,
1745026687.5, 1556481250, 0, 3551716021.25, 3108137500, 3718036445,
1380278750, 2217526000, 1026813750)), .Names = c("Name", "Col",
"dKO1", "dKO2", "sdi1"), row.names = c(29L, 30L, 1278L, 1295L,
1296L, 1297L, 1298L, 1307L, 1642L, 1674L, 1754L), class = "data.frame")
> df1
Name Col dKO1 dKO2 sdi1
29 Mark 1769380098 1534931323 1628137500 1545572703
30 Anders 1444462500 1794881375 1781982738 1748600000
1278 Tom 1499146688 2292661688 1659391250 1745026688
1295 Vin 1276309375 855786250 741220688 1556481250
1296 Marcel 22279500 21915500 41242000 0
1297 Tyta 3114023471 3056061512 2833327766 3551716021
1298 Gerta 2961012500 3581940000 3675450000 3108137500
1307 Moses 3978937424 3766909703 3592650662 3718036445
1642 Hank 1703925000 2043300000 1586512500 1380278750
1674 Rita 1838885550 2135859875 1934575000 2217526000
1754 Margary 0 1482031250 1467271250 1026813750
一些值为零。我想在整个数据框中为这些数字添加 0.00001。然后,我想记录转换所有列,不包括第一列。我怎样才能做到这一点?
解决方案
使用dplyr
您必须做两件事才能获得所需的结果:
df1[df1==0] <- 0.00001
df1 %>%
mutate_at(vars(-Name), log)
但是,由于您想log
在列上使用 a,我建议您跳过该df1[df1==0] <- 0.00001
部分并替换-Inf
由log
with0
或NA
或您需要的任何值创建的部分。
推荐阅读
- javascript - Chartjs - 如何从我的数据库中的值更新数据?
- c# - 选中复选框时添加新行
- git - Git:引用之间的差异和另外使用文件模式?
- php - 谷歌地图里程功能返回两个地址之间的里程
- javascript - 无法使用 Google Apps 脚本 (javascript) 对 Fantasy Premier League API 进行身份验证
- android - 扩展一个android服务接口
- c++ - 混淆了 while(cin >> x && x != 0) (当 int x = 0) 与 while(x != 0 && cin >> x ) (当 int x = 1)
- python - Pandas 在预算范围内找到所有行组合
- excel - UserForm_Initialize - 需要帮助解决运行时错误'91:对象变量或未设置块变量
- android - 如何在文本输入布局中设置文本样式正常和提示样式粗体?