是否有一个R函数可以在某个字符串之后移动数据?

是否有一个R函数可以在某个字符串之后移动数据?,r,data-cleaning,R,Data Cleaning,我试图将数据移动到数据中某些点之后的新列。我的数据分布在多个数据帧中,这些数据帧只有一些共同的元素,因此我希望能够创建一个循环来清理数据集。我正在寻找一个函数,在第一次出现某些文本后,例如“Total”,在一行中,下面的所有数据都会移动到一个新的列中 第一 第二 第三 一个 1. 一个 1. 全部的 2. 两个 2. 两个 2. 全部的 2. 个人意见cbind如果行数太多,则在更宽的范围内保存数据会太麻烦。仍然可以像这样将数据分成不同的组 df <- read.table(text =

我试图将数据移动到数据中某些点之后的新列。我的数据分布在多个数据帧中,这些数据帧只有一些共同的元素,因此我希望能够创建一个循环来清理数据集。我正在寻找一个函数,在第一次出现某些文本后,例如“Total”,在一行中,下面的所有数据都会移动到一个新的列中

第一 第二 第三 一个 1. 一个 1. 全部的 2. 两个 2. 两个 2. 全部的 2.
个人意见
cbind
如果行数太多,则在更宽的范围内保存数据会太麻烦。仍然可以像这样将数据分成不同的组

df <- read.table(text = "first  second
One 1   
One 1   
Total   2   
Two 2   
Two 2   
Total   2", header = T)


df$dummy = rev(cumsum(rev(df$first == "Total")))
df
> df
  first second dummy
1   One      1     2
2   One      1     2
3 Total      2     2
4   Two      2     1
5   Two      2     1
6 Total      2     1
这是另一种尝试

库(dplyr,warn.conflicts=FALSE)
图书馆(tidyr)
图书馆(purrr)
数据%
突变(总组=如果其他(第一个=“总”,总组-1L,总组))%>%
#将df拆分为多个df并绑定COL
组分割(总组,.keep=FALSE)%>%
bind_cols()
#>新名称:
#>*第一->第一…1
#>*第二->第二…2
#>*第一->第一…3
#>*秒->秒…4
新数据
#>#tibble:3 x 4
#>第一…1秒…2秒…3秒…4
#>                        
#>一一二二
#>二一一二二
#>3总计2总计2
#如果你只有两个小组,这可以工作-否则需要更多
#研究方法。希望这能为您提供足够的提示,以便进一步发展
名称(新数据)#一个tible:3 x 4
#>左中右四
#>        
#>一一二二
#>二一一二二
#>3总计2总计2

>(V1.0.0)

在2021-04-04创建,请添加一个可重复的例子来解释您的需求。请考虑创建一个最小的可重复的示例,这样您就可以更快地得到更多的答案。嗨,谢谢你的编辑。还请包括手动计算/写入的所需输出
df %>% group_split(d = rev(cumsum(rev(first == "Total")))) %>% bind_cols()

# A tibble: 3 x 6
  first...1 second...2 d...3 first...4 second...5 d...6
  <chr>          <int> <int> <chr>          <int> <int>
1 Two                2     1 One                1     2
2 Two                2     1 One                1     2
3 Total              2     1 Total              2     2