V21.X1 V21.X2
A 02:01:03
A 02:01:04
A 03:01:05
A 03:01:04
我使用which
从数据帧中提取了一个向量或一列,并将其拆分为两个新列(如上所示),但是我想过滤包含02:01的行。我尝试再次使用V21.X1
分别拆分which
,但R并未将V21.X2
视为单独的一列,而是将X1
和X2
的一部分合并或将{ {1}}。
我想将此输出存储在另一个变量中
V21
答案 0 :(得分:0)
我们可以使用正则表达式来匹配用于过滤行的模式
subset(df1, grepl("^02:01", V21.X2))
# V21.X1 V21.X2
#1 A 02:01:03
#2 A 02:01:04
或使用substr
提取,然后执行==
subset(df1, substr(V21.X2, 1, 5)=='02:01')
# V21.X1 V21.X2
#1 A 02:01:03
#2 A 02:01:04
如果数据集是matrix
列,则仅存在一个sngle列,即“ V21”,其中存储matrix
和两列“ X1”和“ X2”
m1 <- cbind(X1 = "A", X2 = c("02:01:03", "02:01:04", "03:01:05", "03:01:04"))
df1 <- data.frame(V21 = rep(NA, 4))
df1$V21 <- m1
subset(df1, grepl("^02:01", V21.X2))
grepl(“ ^ 02:01”,V21.X2)中的错误:找不到对象'V21.X2'
一种解决方案是将data.frame
中的列转换为普通列并执行subset
df2 <- do.call(data.frame, df1)
subset(df2, grepl("^02:01", V21.X2))
# V21.X1 V21.X2
#1 A 02:01:03
#2 A 02:01:04
df1 <- structure(list(V21.X1 = c("A", "A", "A", "A"), V21.X2 = c("02:01:03",
"02:01:04", "03:01:05", "03:01:04")), .Names = c("V21.X1", "V21.X2"
), class = "data.frame", row.names = c(NA, -4L))