下面您可以看到我的数据框。
df<-data.frame(
items=c("1 Food Item 1",
"1.1 Food Item 2",
"01.1.1 Food Item 3",
"01.1.2 Food Item 4",
"01.1.3 Food Item 5",
"2 Food Item 6",
"2.1 Food Item 7",
"02.1.1 Food Item 8",
"10 Food Item 9",
"10.1 Food Item 10",
"10.1.1 Food Item 11",
"10.1.2 Food Item 12")
)
df
此df
包含以两位、三位和四位不同数字开头的项目。现在我想过滤这个df
,最终的输出应该是只有四位数字的项目:
"01.1.1 Food Item 3",
"01.1.2 Food Item 4",
"01.1.3 Food Item 5",
"02.1.1 Food Item 8",
"10.1.1 Food Item 11",
"10.1.2 Food Item 12"
有人可以帮我解决这个问题吗?
最佳答案
在 base R
中使用 subset
和 grepl
- 匹配 2 位数字的模式 (\\d{2}
) 后跟一个点,然后是一个数字,再后跟一个点和另一个数字,后面是空格 (\\s+
)
subset(df, grepl("^\\d{2}\\.\\d\\.\\d\\s+", items))
-输出
items
3 01.1.1 Food Item 3
4 01.1.2 Food Item 4
5 01.1.3 Food Item 5
8 02.1.1 Food Item 8
11 10.1.1 Food Item 11
12 10.1.2 Food Item 12
关于r - 在R中过滤数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74173405/