这应该是一个简单的方法,但我没有找到既有效又优雅的解决方案......
我有一个表,其中一列中有一个字符串。有些字符串以字母“E”开头,其他字符串以字母“B”开头。如何生成两个表,其中第一个表仅包含字符串以“E”开头的行,第二个表包含字符串以“B”开头的行?
编辑:
示例:
Col1 Col2 StringCol Col4
1 1 Bacteria 3.2
2 3 Eukaryote 1.0
4 1 Bacteria 1.5
0 2 Bacteria 1.2
2 0 Eukaryote 0.9
现在数据框应分为两个框架,一个包含所有“细菌”行,另一个包含所有“真核生物”行。
最佳答案
您始终可以使用 grepl
进行字符串匹配。因此,一种选择是
# Some sampledata:
yourdata <- data.frame(id=1:5, stringcol=c("bus", "easter", "Bunny", "nothing", "End"))
subset(yourdata, grepl("^B", stringcol))
# ^ marks the beginning of a string, then followed by "B"
# For E:
subset(yourdata, grepl("^E", stringcol))
如果你希望匹配不区分大小写,你可以这样做
subset(yourdata, grepl("^[Bb]", stringcol))
完全不同的方法是使用
subset(yourdata, substring(stringcol, 1, 1) == 'B')
# substring(..., 1, 1) extracts just the first letter from your string.
编辑:
如果你知道整个字符串,你总是可以做出最优雅的版本:
subset(yourdata, stringcol == 'Bacteria')
关于r - 根据列中的字符串拆分表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20471382/