【问题标题】:Loop over variables循环变量
【发布时间】:2018-12-05 18:31:22
【问题描述】:

我从 Stata 搬到了匹配命令的问题。 简单地说,我想遍历数据框中的变量并进行操作/分析,如下面的代码。有没有办法,例如定义一个临时变量(tmp)在循环内携带选定的变量并直接寻址(如 dt$tmp)。我很感激你的cmets。

下面的代码循环遍历列以获取数据帧的变量名称和标签。

#Build the dataframe
dt <- data.frame(x=1:5,y=seq(1,10,2),z=seq(1,15,3))
attr(dt$x,'label') <- "First"
attr(dt$y,'label') <- "Second"
attr(dt$z,'label') <- "Third"


#loop over variables and store names and labels in a dataframe
names<- names(dt)
vars<- data.frame(id = 1:ncol(dt),var=NA,varlab =NA)
i <- 0
for(n in names){
  i <- i + 1
  nlab <- attr(dt[[paste(n)]], 'label')
  vars$var[i] <- n
  vars$varlab[i] <- nlab
}

看到这个:

id var 变量

1 x 第一
2年秒
3 z 第三

【问题讨论】:

  • 你能提供一个可重现的例子吗?
  • 我不了解 Stata,所以我也不确定您要完成什么。如果您正在寻找一本好的参考书来帮助您入门,我会推荐 R for Data Science(在线 r4ds.had.co.nz)。有时,从一种语言迁移到另一种语言时的问题是您对数据对象的看法发生了变化。在一种语言中看起来微不足道的东西在另一种语言中是闻所未闻的。祝你好运!

标签: r loops variables


【解决方案1】:

很难解释您要完成的工作。例如,除非 tmp 最初是 df 中的一列,否则这将不起作用,但我们很难看到您的屏幕。如果您需要将 tmp 定义为新列,则应在新列中 cbind 或 dplyr::mutate 。

如果你只是勾勒出你想要的样子,那也会很有帮助。您可以使所有内容都通用,只是帮助人们帮助您。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多