【发布时间】:2019-02-07 19:33:24
【问题描述】:
我有一个关于人类价值观的调查响应数据框 (df),其中包含 57 列/变量的数值/比例响应。每列属于十个类别之一,并且它们不在连续的组中。
我有第二个数据框(计分表),它将类别与变量的列号相关联;列号列表都是不同的长度:
scoretable <- data.frame(
valuename =
c("Conformity","Tradition","Benevolence","Universalism","Self-
Direction","Stimulation","Hedonism","Achievement","Power","Security"),
valuevars = I(list(c(11,20,40,47), # Conformity
c(18,32,36,44,51), # Tradition
c(33,45,49,52,54), # Benevolence
c(1,17,24,26,29,30,35,38), # Universalism
c(5,16,31,41,53), # Self-Direction
c(9,25,37), # Stimulation
c(4,50,57), # Hedonism
c(34,39,43,55), # Achievement
c(3,12,27,46), # Power
c(8,13,15,22,56))), # Security
stringsAsFactors=FALSE)
我想使用 valuescore 函数遍历 scoretable,该函数计算数据框 df 中该组列中所有响应的均值和 sd,并将结果写入第三个结果表:
valuescore = function(df,scoretable,valueresults){
valuename = scoretable[,1]
set <- df[,scoretable[,2]]
setmeans <- colMeans(set,na.rm=TRUE)
valuemean <- mean(setmeans)
setvars <- apply(set, 2, var)
valuesd <-sqrt(mean(setvars))
rbind(valueresults,c(valuename, valuemean, valuesd))
}
a <- nrow(scoretable)
for(i in 1:a){
valuescore(df,scoretable[i,],valueresults)
}
我对 R 和一般编程非常陌生(这是我在这里的第一个问题),我正在努力确定如何将列表变量传递给函数和/或作为数据帧的地址范围。
【问题讨论】:
标签: r