替换字符串数据框

use*_*387 1 r

我有这样的文件

1880.1.1    74
1881.1.1    74
1882.1.1    75
1883.1.1    79
1884.1.1    111
1885.1.1    145
Run Code Online (Sandbox Code Playgroud)

我想创建一个这样的数据帧

1880    1    1  74
1881    1    1  74
1882    1    1  75
1883    1    1  79
1884    1    1  111
1885    1    1  145
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用gsub功能时,我失败了......非常感谢!

A5C*_*2T1 5

您可以使用concat.split我的"splitstackshape"软件包,以更方便的方式完成您正在尝试的操作.假设你data.frame被称为"mydf"并且第一列被称为"V1",你可以这样做:

> library(splitstackshape)
> concat.split(mydf, "V1", sep = ".", drop = TRUE)
   V2 V1_1 V1_2 V1_3
1  74 1880    1    1
2  74 1881    1    1
3  75 1882    1    1
4  79 1883    1    1
5 111 1884    1    1
6 145 1885    1    1
Run Code Online (Sandbox Code Playgroud)

这里,"mydf"定义为:

mydf <- structure(list(V1 = c("1880.1.1", "1881.1.1", "1882.1.1", "1883.1.1", 
  "1884.1.1", "1885.1.1"), V2 = c(74L, 74L, 75L, 79L, 111L, 145L)), 
  .Names = c("V1", "V2"), class = "data.frame", row.names = c(NA, -6L))
Run Code Online (Sandbox Code Playgroud)

基数R中的等价物是使用如下内容:

> cbind(read.table(text = as.character(mydf$V1), sep = "."), mydf[-1])
    V1 V2 V3  V2
1 1880  1  1  74
2 1881  1  1  74
3 1882  1  1  75
4 1883  1  1  79
5 1884  1  1 111
6 1885  1  1 145
Run Code Online (Sandbox Code Playgroud)