【问题标题】:How do I combine vectors into a dataframe using an index vector in R?如何使用 R 中的索引向量将向量组合到数据框中?
【发布时间】:2020-04-17 09:01:43
【问题描述】:

我有一个包含 27 个问题的调查 (IPAQ) 答案的数据框 df。这些是前 8 列:

df
       ID   `1`   `2`   `3`   `4`   `5`   `6`   `7`
    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 1    28     0     0     0     0     0     0     0
 2    52     0     0     0     0     0     0     0
 3    97     1     0     0     1    60     0     0
 4   100     0     0     0     0     0     0     0
 5   112     0     0     0     0     0     0     0
 6   157     0     0     0     0     0     0     0
 7   252     0     0     0     0     0     0     0
 8   254     1     0     0     4   120     7   180
 9   309     1     0     0     2    30     0     0
10   332     0     0     0     0     0     0     0

我创建了将这些答案转换为有意义的总数的变量,例如:

###Housework and gardening###
gard.vig = (5.5 * df$`14` * df$`15`)
gard.mod = (4.0 * df$`16` * df$`17`)
house.mod = (3.0 * df$`18` * df$`19`)
total.hg = (gard.mod + gard.vig + house.mod)

###Leisure###
lei.walk = (3.3 * df$`20` * df$`21`)
lei.mod = (4.0 * df$`24` * df$`25`)
lei.vig = (8.0 * df$`22` * df$`23`)
tot.lei = (lei.walk + lei.mod + lei.vig)

我想使用原始df 中的ID 变量将这些变量组合/绑定到一个数据框/小标题中 创建这样的东西:

ID lei.walk lei.mod lei.vig total.lei gard.mod gard.vig etc.
28 600      55      89      etc.
52 etc. 
etc.

【问题讨论】:

  • 您的计算似乎与ID 不一致,您只是想cbind 他们吗? cbind(df[1], gard.vig, gard.mod, house.mod, total.hg......) ?
  • 是的,我能做到!但这是否能保证变量的答案与正确的 ID 有很大关系。我需要创建一个 for 循环吗?
  • 向量相乘时顺序不会改变。见1:10 * 2 而且看起来所有IDs 本身都是独一无二的,不要重复。
  • 谢谢。这是一个简单的解决方案!

标签: r dataframe vector indexing bind


【解决方案1】:

由于向量已经计算好了,我们可以直接cbind他们

cbind(df[1], gard.vig, gard.mod, house.mod, total.hg, lei.walk, 
             lei.mod, lei.vig, tot.lei)

或使用data.frame

data.frame(ID = df$ID, gard.vig, gard.mod, house.mod, total.hg,
                lei.walk,lei.mod, lei.vig, tot.lei)

【讨论】:

    【解决方案2】:

    我们可以使用tibble

    library(tibble)
    tibble(df[1],  gard.vig, gard.mod, house.mod, total.hg, lei.walk, 
             lei.mod, lei.vig, tot.lei)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 2021-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多