R Select 按结束值行
R Select Row By Ending Value
data=data.frame("grade"=c(1, 2, 3, 1, 2, 3),
"class"=c('a', 'a', 'a', 'b', 'b', 'b'),
"size"=c(1, 1, 2, 2, 2, 1),
"var"=c('q33', 'q35', 'q39', 'q33', 'q35', 'q39'),
"score"=c(5, 8, 7, 3, 7, 5))
如果假设我希望对数据进行子集化以排除 'var' 以“5”结尾的任何行,我该怎么做?希望输出:
data1=data.frame("grade"=c(1, 3, 1, 3),
"class"=c('a', 'a', 'b', 'b'),
"size"=c(1,2, 2, 1),
"var"=c('q33', 'q39', 'q33', 'q39'),
"score"=c(5, 7, 3, 5))
我们可以使用grepl
和$
来指定字符串的结尾
subset(data, !grepl('5$', var))
# grade class size var score
#1 1 a 1 q33 5
#3 3 a 2 q39 7
#4 1 b 2 q33 3
#6 3 b 1 q39 5
如果我们需要检查第一个和最后一个,使用^
指定开始
subset(data, !grepl('^5|5$', var))
在这种情况下,起始字符不是数字,如果我们要检查数字的第一次出现
subset(data, !grepl('\D+5|5$', var))
正如@Frank 提到的,我们可以使用需要字符输入的内置 endsWith
。
subset(data, !endsWith(var, "5"))
# grade class size var score
#1 1 a 1 q33 5
#3 3 a 2 q39 7
#4 1 b 2 q33 3
#6 3 b 1 q39 5
数据
data <- data.frame(grade=c(1, 2, 3, 1, 2, 3),
class=c('a', 'a', 'a', 'b', 'b', 'b'),
size=c(1, 1, 2, 2, 2, 1),
var=c('q33', 'q35', 'q39', 'q33', 'q35', 'q39'),
score=c(5, 8, 7, 3, 7, 5), stringsAsFactors = FALSE)
data=data.frame("grade"=c(1, 2, 3, 1, 2, 3),
"class"=c('a', 'a', 'a', 'b', 'b', 'b'),
"size"=c(1, 1, 2, 2, 2, 1),
"var"=c('q33', 'q35', 'q39', 'q33', 'q35', 'q39'),
"score"=c(5, 8, 7, 3, 7, 5))
如果假设我希望对数据进行子集化以排除 'var' 以“5”结尾的任何行,我该怎么做?希望输出:
data1=data.frame("grade"=c(1, 3, 1, 3),
"class"=c('a', 'a', 'b', 'b'),
"size"=c(1,2, 2, 1),
"var"=c('q33', 'q39', 'q33', 'q39'),
"score"=c(5, 7, 3, 5))
我们可以使用grepl
和$
来指定字符串的结尾
subset(data, !grepl('5$', var))
# grade class size var score
#1 1 a 1 q33 5
#3 3 a 2 q39 7
#4 1 b 2 q33 3
#6 3 b 1 q39 5
如果我们需要检查第一个和最后一个,使用^
指定开始
subset(data, !grepl('^5|5$', var))
在这种情况下,起始字符不是数字,如果我们要检查数字的第一次出现
subset(data, !grepl('\D+5|5$', var))
正如@Frank 提到的,我们可以使用需要字符输入的内置 endsWith
。
subset(data, !endsWith(var, "5"))
# grade class size var score
#1 1 a 1 q33 5
#3 3 a 2 q39 7
#4 1 b 2 q33 3
#6 3 b 1 q39 5
数据
data <- data.frame(grade=c(1, 2, 3, 1, 2, 3),
class=c('a', 'a', 'a', 'b', 'b', 'b'),
size=c(1, 1, 2, 2, 2, 1),
var=c('q33', 'q35', 'q39', 'q33', 'q35', 'q39'),
score=c(5, 8, 7, 3, 7, 5), stringsAsFactors = FALSE)