在R中以丑陋的方式打包数据

在R中以丑陋的方式打包数据,r,tibble,R,Tibble,我有一个整理的问题,根本不会消失,真的不知道该怎么办,现在 我有一个TIBLE,其中第一列Id存储一个整数Id,第二列值如下所示: "2.3(09/13)2.6(10/14)2.9(4/15)" 所以它变成了数字(日期)数字(日期)数字(日期)等等 问题是,我无法确定这种模式会重复多少次 示例数据: 1 0.2(01/17)0.19(02/17)0.254(03/17)0.26(07/17)0.217(09/17)0.72(11/17)0.896(11/17) 20.144(06/17)0.17

我有一个整理的问题,根本不会消失,真的不知道该怎么办,现在

我有一个TIBLE,其中第一列Id存储一个整数Id,第二列值如下所示: "2.3(09/13)2.6(10/14)2.9(4/15)" 所以它变成了数字(日期)数字(日期)数字(日期)等等

问题是,我无法确定这种模式会重复多少次

示例数据:

1 0.2(01/17)0.19(02/17)0.254(03/17)0.26(07/17)0.217(09/17)0.72(11/17)0.896(11/17)

20.144(06/17)0.171(08/17)0.21(11/17)

我要找的是: 1 0.2 01/17 1 0.19 02/17 1 0.254 03/17

我想做的是把它转换成一个长格式的列表。 我试着用

separate(tibble,
         col = "values",
         into = c("a","b","c","d","e","f","g","h","i","l"),
         sep=c("\\(","\\)")
)
如果我在这之后再使用
pivot\u
,我可以让它工作,但是这个问题开始让我感兴趣,所以现在我正试图用更好的方式解决它

我一直只学习Java之类的东西,所以这种逻辑对我来说是非常新的

谢谢

…很抱歉,我不知道如何将数据格式化为表格

编辑:对不起,我不清楚我是如何格式化数据的! 正确的格式是c(1,2),c(0.2(01/17)0.19(02/17)0.254(03/17)0.26(07/17)0.217(09/17)0.72(11/17)0.896(11/17),0.144(06/17)0.171(08/17)0.21(11/17))
很抱歉,但是我可以从@jay.sf获得答案,非常感谢

baser方法,将
strsplit
结果排列成矩阵

res <- do.call(rbind.data.frame, Map(function(x, y)
  transform(data.frame(id=y, matrix(el(strsplit(x, "[()]")), ncol=2, b=T)),
            X1=as.numeric(levels(X1))[X1]), 
  Map(`[`, strsplit(x, " "), 2), substr(x, 1, 1)))
res
#    id    X1    X2
# 1   1 0.200 01/17
# 2   1 0.190 02/17
# 3   1 0.254 03/17
# 4   1 0.260 07/17
# 5   1 0.217 09/17
# 6   1 0.720 11/17
# 7   1 0.896 11/17
# 8   2 0.144 06/17
# 9   2 0.171 08/17
# 10  2 0.210 11/17

resbaser方法,将
strsplit
结果排列成矩阵

res <- do.call(rbind.data.frame, Map(function(x, y)
  transform(data.frame(id=y, matrix(el(strsplit(x, "[()]")), ncol=2, b=T)),
            X1=as.numeric(levels(X1))[X1]), 
  Map(`[`, strsplit(x, " "), 2), substr(x, 1, 1)))
res
#    id    X1    X2
# 1   1 0.200 01/17
# 2   1 0.190 02/17
# 3   1 0.254 03/17
# 4   1 0.260 07/17
# 5   1 0.217 09/17
# 6   1 0.720 11/17
# 7   1 0.896 11/17
# 8   2 0.144 06/17
# 9   2 0.171 08/17
# 10  2 0.210 11/17
res代码:

do.call('rbind', unlist(
  apply(df, 1, function(x){
    lapply(strsplit(x, ")", fixed = TRUE), function(y) {
      m <- do.call('rbind', strsplit(y, "(", fixed = TRUE))
      m <- as.data.frame(m, stringsAsFactors = FALSE)
      names(m) <- c('val', 'date')
      m$val <- as.numeric(m$val)
      m
    })
  } ), recursive = FALSE))


#             val  date
# values.1  0.200 01/17
# values.2  0.190 02/17
# values.3  0.254 03/17
# values.4  0.260 07/17
# values.5  0.217 09/17
# values.6  0.720 11/17
# values.7  0.896 11/17
# values.11 0.144 06/17
# values.21 0.171 08/17
# values.31 0.210 11/17
df <- read.table(text='values
                 1        0.2(01/17)0.19(02/17)0.254(03/17)0.26(07/17)0.217(09/17)0.72(11/17)0.896(11/17)

                 2        0.144(06/17)0.171(08/17)0.21(11/17)', stringsAsFactors = FALSE, header = TRUE)
do.call('rbind',取消列表(
应用(df,1,功能(x){
lapply(strsplit(x,“)”,fixed=TRUE),函数(y){
m代码:

do.call('rbind', unlist(
  apply(df, 1, function(x){
    lapply(strsplit(x, ")", fixed = TRUE), function(y) {
      m <- do.call('rbind', strsplit(y, "(", fixed = TRUE))
      m <- as.data.frame(m, stringsAsFactors = FALSE)
      names(m) <- c('val', 'date')
      m$val <- as.numeric(m$val)
      m
    })
  } ), recursive = FALSE))


#             val  date
# values.1  0.200 01/17
# values.2  0.190 02/17
# values.3  0.254 03/17
# values.4  0.260 07/17
# values.5  0.217 09/17
# values.6  0.720 11/17
# values.7  0.896 11/17
# values.11 0.144 06/17
# values.21 0.171 08/17
# values.31 0.210 11/17
df <- read.table(text='values
                 1        0.2(01/17)0.19(02/17)0.254(03/17)0.26(07/17)0.217(09/17)0.72(11/17)0.896(11/17)

                 2        0.144(06/17)0.171(08/17)0.21(11/17)', stringsAsFactors = FALSE, header = TRUE)
do.call('rbind',取消列表(
应用(df,1,功能(x){
lapply(strsplit(x,“)”,fixed=TRUE),函数(y){
M