r - 根据列中的字符串拆分表

标签 r string

这应该是一个简单的方法,但我没有找到既有效又优雅的解决方案......

我有一个表,其中一列中有一个字符串。有些字符串以字母“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/

相关文章:

R,Polyclip,相交边

将字符复制到字符*

java - 如何将字符转换为字符串?

c++ - 清理字符串以打印到终端的惯用方法?

python - 高效查找字符串是否包含一组字符(类似子串但忽略顺序)?

r - 寻找一种使用 ggplot 绘制以下相关数据的方法

r - 如何在R中搜索带括号的字符串

旋转整个 ggplot() 而不旋转任何文本 R

RDJDBC::dbConnect 无法连接到 HiveServer2 (kerberos +sasl)

java - 为什么 String 在 Java 中是不可变的或最终的