У меня есть фрейм данных (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, которая вычисляет среднее значение и sd всех ответов в этой группе столбцов в фрейме данных dfи запишите результат в третью таблицу результатов:
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 и программированием в целом (это мой первый вопрос здесь), и я изо всех сил пытаюсь определить, как передать списокпеременные для функций и / или диапазоны адресов для фреймов данных.