R:只保留列中所有行中的3(x)个第一个字符?

时间:2014-02-10 11:02:31

标签: r

我已将几千个xls文件导入到data.frame中,并添加了一个包含文件名的列。

因此我有数据

data1  data2  data3  filname
A      A2     A3     301fg.xls
B      B2     B3     302gfg.xls
C      C2     C3     303gfsddf.xls
.,.,.,.

我想重命名文件名列中的名称,只包含3个第一个字符/数字,从而给出:

data1  data2  data3  filname
A      A2     A3     301
B      B2     B3     302
C      C2     C3     303
.,.,.,.

2 个答案:

答案 0 :(得分:24)

df$filname <- sub("^(\\d{3}).*$", "\\1", df$filname)

df$filname <- substr(df$filname, 0, 3)

答案 1 :(得分:0)

@lukeA发布了最合乎逻辑的答案,但 也可以使用read.fwf

> read.fwf(textConnection(mydf$filname), 3)
   V1
1 301
2 302
3 303

如果strread.fwf(textConnection(as.character(mydf$filname)), 3)变量,则可能需要mydf$filename,具体取决于您factor的数据。