Подстановка специфичных для кластера значений в списке data.frames в R - PullRequest
1 голос
/ 11 ноября 2019

Вдохновленный этим ответом , моя цель - найти переменные в m кластерах data.frames, которые относятся только к одному m (например, m[[15]]), но не к другим m s.

Например, я знаю, что переменная genre == 4 относится только к m[[15]] ("Fazio", то есть names(m)[15]), а genre == 4 не встречается ни в одном другом из m скопления (подтвердите subset(d, genre == 4)).

Таким образом, я ожидаю, что мой вывод даст мне имя "Fazio" и genre == 4.

Я хочу повторить этот процесс для всех переменныхпоказано в mods не просто genre?

Я попытался следующее безуспешно:

d <- read.csv("https://raw.githubusercontent.com/rnorouzian/m/master/v.csv", h = T) # DATA

mods <- c("genre","cont.type","time","cf.timely","ssci","setting","ed.level",  # mods
          "Age","profic","motivation","Ss.aware","random.grp","equiv.grp",
          "rel.inter","rel.intra","sourced","timed","Location",
          "cf.scope","cf.type","error.key","cf.provider","cf.revision","cf.oral",
          "Length","instruction","graded","acc.measure","cf.training","error.type")

m <- split(d, d$study.name) # `m` clusters of data.frames

# SOLUTION TRIED:

tmp = do.call(rbind, lapply(mods, function(x){
  d = unique(d[c("study.name", x)])
  names(d) = c("study.name", "val")
  transform(d, nm = x)
}))

# this logic may need to change:
tmp = tmp[ave(as.numeric(as.factor(tmp$val)), tmp$val, FUN = length) == 1,] 

lapply(split(tmp, tmp$study.name), function(a){
 setNames(a$val, a$nm)
})                               # doesn't return anything
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...