kqu*_*ach 0 iteration variables loops r apply
我吮吸循环和[l,s,v]应用,我需要总结一个大的纵向数据集.我已经彻底搜索了我的问题好几天,我发布这个因为我无法解决我的问题.
数据看起来像这样:
id var1_dose var1_unit var2_dose var2_unit var3_dose var3_unit
1         2        mL         5        mL         1        mL
2         4        mg         2        mg         4        mg
3         6       mcg         4       mcg         2       mcg
1         1        mL         1        mL         3        mL
2         3        mL         3        mL         5        mL
我想通过使用apply或loop并输出作为列表的var(1-3)剂量追加.
我想创建一个新的变量来连接剂量和单位的数量,例如第1行,var1 = 2mL,var2 = 5 mL,var3 = 1mL
非常感谢您的帮助.
这不是您要求的答案,但我认为这对您和其他人有帮助.请考虑整理数据框.例如:
library(tidyr)
df1 <- data.frame(id = c(1,2,3,1,2),
       var1_dose = c(2,4,6,1,3),
       var1_unit = c("mL", "mg", "mcg", "mL", "mL"),
       var2_dose = c(5,2,4,1,3),
       var2_unit = c("mL", "mg", "mcg", "mL", "mL"),
       var3_dose = c(1,4,2,3,5),
       var3_unit = c("mL", "mg", "mcg", "mL", "mL"),
       stringsAsFactors = FALSE)
df1.gather <- gather(df1, variable, value, -id)
df1.tidy <- separate(df1.gather, variable,
            into = c("variable", "measurement"), sep = "_")
head(df1.tidy)
# id variable measurement value
# 1      var1        dose     2
# 2      var1        dose     4
# 3      var1        dose     6
# 1      var1        dose     1
# 2      var1        dose     3
# 1      var1        unit    mL
# 2      var1        unit    mg
# 3      var1        unit   mcg
# 1      var1        unit    mL
# 2      var1        unit    mL
# hacky workaround to get a units column
df1.tidy <- subset(df1.tidy, measurement != "unit")
df1.tidy$unit <- rep(c("mL", "mg", "mcg", "mL", "mL"), 3)
这种结构应该使得汇总,建模和绘图(使用ggplot2)变得更加容易.