我无法对数据进行子集设置.我想把数据子集放在x列,前3个字符从G45开始.

我的数据框:

x <- c("G448", "G459", "G479", "G406")  
y <- c(1:4)
My.Data <- data.frame (x,y)

我试过:

subset (My.Data, x=="G45*")

但我不确定如何使用通配符.我还try 了grep()来寻找指标:

grep  ("G45*", My.Data$x)

但它会返回所有4行,而不仅仅是G45开头的行,这可能也是因为我不确定如何使用通配符.

推荐答案

使用[提取非常简单:

grep将给出与搜索模式匹配的位置(除非使用value = TRUE).

grep("^G45", My.Data$x)
# [1] 2

由于您是在单个列的值内搜索,因此实际上对应于行索引.所以,将其与[一起使用(在这里,您将使用My.Data[rows, cols]来获得特定的行和列).

My.Data[grep("^G45", My.Data$x), ]
#      x y
# 2 G459 2

subset的"帮助"页面显示了如果您更喜欢使用grepgrepl而不是[,则可以将subsetgrep一起使用.这里有一个例子.

subset(My.Data, grepl("^G45", My.Data$x))
#      x y
# 2 G459 2

从R3.3开始,现在还有startsWith函数,可以与subset(或上述任何其他方法)一起使用.根据该功能的帮助页面,它比使用substringgrepl要快得多.

subset(My.Data, startsWith(as.character(x), "G45"))
#      x y
# 2 G459 2

R相关问答推荐

创建计数(带重置)变量

基于2行删除重复项指定每列要执行的操作

按崩溃类别分类的指数

如何删除多个.CSV文件的行

如何在ggplot 2线性图的每个方面显示每个组的误差条?

以R中的正确顺序将日期时间字符列转换为posixct

使用gggrassure减少地块之间的空间

根据文本字符串中的值粘贴新列

R函数,用于生成伪随机二进制序列,其中同一数字在一行中不出现超过两次

在R gggplot2中是否有一种方法将绘图轴转换成连续的 colored颜色 尺度?

2个Rscript.exe可执行文件有什么区别?

如何根据数据帧中的值从该数据帧中提取值?

以NA为通配符的R中的FULL_JOIN以匹配其他数据中的任何值.Frame

如何在PDF格式的kableExtra表格中显示管道字符?

提高圣彼得堡模拟的速度

为什么我对圆周率图的蒙特卡罗估计是空的?

如何在R中使用混合GAM模型只对固定的影响因素进行适当的预测?

删除数据帧中特定行号之间的每第三行和第四行

整理曲线图、曲线图和点图

Data.table::Shift type=允许扩展数据(&Q;LAG&Q;)