【问题标题】:Modifying the values of a variable within a data frame修改数据框中变量的值
【发布时间】:2017-06-26 02:25:06
【问题描述】:

[使用 R 3.2.2]

我正在尝试使用循环修改数据框中包含的几个变量的值。具体来说,我想将 11 个变量的所有值除以 10。

首先,我尝试为一个变量(bio1)做这件事:

dataframe0$bio1/10

这个命令在控制台显示我想要得到的结果,但是在数据框中并没有修改。

在尝试构建循环时,我想出了一些选择:

首先,我创建了一个包含所有变量的向量,然后构建了循环:

vlist <- c("bio1", "bio2", "bio3", "bio4", "bio5", "bio6", "bio7", "bio8", "bio9", "bio10", "bio11")
for (i in vlist) {
  dataframe0$i/10
}

由于前面的代码可能替换了 ´ ".." ´ 以及循环内的字符串 (´i´),因此它不起作用,我尝试使用另一个循环:

for(var in paste0("bio", 1:11)) {
  dataframe0$var/10
}

我应该怎么做才能执行它并将修改保存在数据框中?提前致谢!

【问题讨论】:

  • 如果您能确定您正在使用的编程语言和框架/库,这将有所帮助。将其添加到标签部分,以便对这些感兴趣的人可以轻松找到您的答案并回答。
  • @JeromeFr 谢谢!我没有与这些代码关联的库...
  • 尝试 apply(dataframe0,2,function(x) x/10) 或 apply(dataframe0[,which(grepl("bio",names(datafram0)))],2,function(x ) x/10)
  • @Leo P. 它有效!非常感谢!!!
  • 很高兴我能帮上忙。

标签: r loops variables dataframe


【解决方案1】:

最简单的解决方案可能是

dataframe0[,vlist] <- dataframe0[,vlist] / 10

为此不需要循环。

示例(为方便起见使用我自己的一些数据):

> head(websurvey[,c("age", "dur")])
      age dur
17514  68 320
15091  70 503
18152  30 276
7558   39 311
22594  47 161
5108   56 284

> websurvey_test[,c("age", "dur")] <- websurvey[,c("age", "dur")]/10

> head(websurvey_test[,c("age", "dur")])
      age  dur
17514 6.8 32.0
15091 7.0 50.3
18152 3.0 27.6
7558  3.9 31.1
22594 4.7 16.1
5108  5.6 28.4

【讨论】:

    猜你喜欢
    • 2021-12-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 2018-05-22
    • 2012-01-15
    相关资源
    最近更新 更多