我有这样的文件
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功能时,我失败了......非常感谢!
您可以使用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)