我试图在R中处理来自Google Form的结果,但在处理字符串数据时遇到了困难。
问题可以在这里看到:
的数据
Google在一个单独的列中返回结果,每个响应用逗号分隔。
他们最后看起来就像
ID | Type of Research
=====================
1 | Policy analysis, Review of other research
2 | Bla
3 | Review of other research, Original empirical research
4 | Policy analysis, Theoretical
5 | Review of other research
字符串
我已经使用grepl为三个预先选择的响应创建了逻辑列和一个data.frame。
Private$ResearchTypeOriginal <- grepl("Original", Private$ResearchType)
Private$ResearchTypeReview <- grepl("Review", Private$ResearchType)
Private$ResearchTypePolicy <- grepl("Policy", Private$ResearchType)
ResearchTypeGrid <- data.frame(Private$ResearchTypeOriginal, Private$ResearchTypeReview, Private$ResearchTypePolicy)
型
这很好用。但是,我也需要把“其他“的拉出来。我用的是
ResearchTypeOther <- subset(Private, !grepl("Original", Private$ResearchType) & !grepl("Review", Private$ResearchType) & !grepl("Policy", Private$ResearchType), select=c(ID, ResearchType, PubLang, Reviewer))
ResearchTypeOther <- na.omit(ResearchTypeOther)
型
但我刚刚意识到,如果一个响应既有一个预先选择的响应,又有一个开放式的响应,那么使用这种方法就失去了它。它可以很好地给我“Bla”响应,但只能给那些完全是“其他”的响应。
换句话说,
ID | Type of Research
=======================
2 | Bla
型
但我希望的是
ID | Type of Research
======================
2 | Bla
4 | Policy analysis, Theoretical
型
这是我第一次在SO上发帖,我显然是R的新手,所以请原谅我提问时的任何错误。如果我的措辞不好,我很抱歉。我还有大约20个其他问题有同样的问题,所以我需要一个灵活的解决方案。
谢谢你的帮助
3条答案
按热度按时间pkmbmrz71#
你可以“regex你的方式通过”在静脉
字符串
jjjwad0x2#
多亏了卢克,一点也不优雅,但这个很有效:
字符串
c0vxltue3#
你可以试试:(使用来自@lukeA的
doc
和items
)字符串