这是我的data.frame的一个片段:
MC0_1_N.1 a c
MC0_1_N.2 d b
MC0_5_N.1 b c
MC0_5_N.2 c d
MC0_5_N.3 a b
MC0_5_N.4 e f
MC0_5_N.5 a h
MC0_5_N.6 k m
MC0_5_N.7 s z
MC0_5_N.8 o p
MC0_5_N.9 p r
MC0_5_N.10 r t
有没有办法删除创建data.frame后形成的最后一行数(1,2,3,4 ...)?
答案 0 :(得分:0)
我们可以使用sub
来匹配点(\\.
-escape,因为它是一个元字符,意思是任何字符),后面跟着一个或多个数字(\\d+
)({ {1}})字符串并替换为空白($
)
""
注意:这里我们假设它是第一列。如果是df1$col1 <- sub("\\.\\d+$", "", df1$col1)
df1$col1
#[1] "MC0_1_N" "MC0_1_N" "MC0_5_N" "MC0_5_N" "MC0_5_N" "MC0_5_N" "MC0_5_N"
#[8] "MC0_5_N" "MC0_5_N" "MC0_5_N" "MC0_5_N" "MC0_5_N"
,请将row.names
替换为df1$col1
即
row.names(df1)
答案 1 :(得分:0)
对于给定的示例,这将非常好:
df1$col1 <- strtrim(df1$col1,7)
当然这只适用于
MC0_10_N.1
这样的项目(请注意中间的两位数10
)注意,这也会删除号码前的.
。
答案 2 :(得分:0)
根据您要更改的列的数据框和名称df
和col1
:
unlist(lapply(stringi::stri_split(str = df$col1,regex = "\\."),function(x) x[[1]]))
导致:
MC0_1_N
MC0_1_N
MC0_5_N
MC0_5_N
MC0_5_N
MC0_5_N
MC0_5_N
MC0_5_N
MC0_5_N
MC0_5_N
MC0_5_N
MC0_5_N