R 基于以特定字符或字符串开头的因子级别的子集数据帧

R 基于以特定字符或字符串开头的因子级别的子集数据帧,r,character,subset,factorial,R,Character,Subset,Factorial,我试图根据一个因子(这里是ID)对数据帧进行子集划分。 我想要的是基于因子水平从一个特定的角色开始进行子集划分。 以下是一个数据帧示例: ID = c("100", "100a", "101", "103", "204", "206", "207", "207a", "207b") # ID is a factor Value = rnorm(9) df = data.frame(ID, Value) 我想以两个独立的数据帧结束,一个ID以“1”开头,另一个ID以“2”开头。我的数据帧比提供

我试图根据一个因子(这里是ID)对数据帧进行子集划分。 我想要的是基于因子水平从一个特定的角色开始进行子集划分。 以下是一个数据帧示例:

ID = c("100", "100a", "101", "103", "204", "206", "207", "207a", "207b") # ID is a factor
Value = rnorm(9)
df = data.frame(ID, Value) 
我想以两个独立的数据帧结束,一个ID以“1”开头,另一个ID以“2”开头。我的数据帧比提供的数据帧长得多,因此我无法基于因子级别列表进行子集划分。 ,但我还没有找到一个有因素的例子


谢谢你的帮助

在我看来,
startsWith
提供了一个非常干净的界面,但是有一个警告

您可能天真地认为可以按如下方式使用它:

ones <- df[startsWith(df$ID, '1'),]
这是因为您使用的是factors,这导致您使用以下语法:

ones <- df[startsWith(as.character(df$ID), '1'),]

你能做的事
df1=df[grepl(^1),df$ID),]
df2=df[grepl(^2,df$ID),]
谢谢拉米娅。该代码是否只查找因子级别名称开头的字符?这就是“^”的作用吗?R现在也有了一个
startsWith()
函数——或者你可以说
firstchar=substr(df$ID,1,1);splitdf=split(df,firstchar)
如果df$ID以1开头,则返回True;否则返回False。实际上,^对应于正则表达式中的行首。
ones <- df[startsWith(as.character(df$ID), '1'),]