r - (选择所有适用项)R 数据框中的调查答案

标签 r

我将 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/

相关文章:

r - 数据框的每一列中的唯一值

r - downloadHandler在使用R Shiny下载图像时出错

r - terra::distance 仅报告到 NA 栅格单元的距离

r - 使用防风草模型来预测 R 中的栅格

R:如何使用任意基数在 ggplot2 中创建对数刻度?

r - 函数默认给定为向量

R将列表转换为成对的连续元素

R:在等待用户输入的同时运行计算

r - 在 rMarkdown 中使用 readline(prompt = "")

c++ - R 和 C++ 中大矩阵的跟踪和逆