我将 Windows7 与 Rstudio 结合使用。我有一个数据框,其中有几列包含 4 个答案或 NA 的因子混合(4 个答案,选择所有适用或不选择)。我很难区分级别,这样我就可以知道有多少受访者选择了。
data<- c("cats", "dogs", "cats, dogs", "cats, dogs, birds(with, commas, randomly)")
data<-data.frame(as.factor(data))
df<-as.data.frame(cbind((1:100),data))
df[,1]<-NULL
df
我如何显示用户选择了狗(一个级别)和猫(另一个级别),而不是选择狗和猫(作为一个级别,单独的形式狗和/或猫)?
也就是说,我如何显示: 狗是 1 猫是2 狗和猫是1,2 dogs and cats and birds 是 1,2,3,当然不会遇到逗号问题,必要时可能会以其他方式出现
我在 Google 上上下搜索过,但就是不明白。我无法正确使用 mChoice 函数(Hmisc 包),我遇到了各种各样的问题。我希望我能在这门类(class)中找到解决方案,具体来说,但我认为无济于事。
感谢您的帮助。
最佳答案
我们可以试试 gsubfn
library(gsubfn)
gsubfn('\\w+', list('dogs'=1, 'cats'=2, 'birds'=3), data)
#[1] "2" "1" "2, 1" "2, 1, 3"
注意:我假设 (with, commas, randomly)
部分就像说 etc...
。即使它已经存在于数据中,gsubfn
解决方案也会返回输出。
或者另一种选择是拆分字符串,然后转换为 factor
并强制转换为 numeric
sapply(strsplit(data, ',\\s*'), function(x)
toString(as.numeric(factor(x, levels=c('dogs', 'cats', 'birds')))))
#[1] "2" "1" "2, 1" "2, 1, 3"
数据
data <- c("cats", "dogs", "cats, dogs", "cats, dogs, birds")
关于r - (选择所有适用项)R 数据框中的调查答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34325173/