r - 是否有一个 R 函数可以在某个字符串之后移动数据?
问题描述
我试图在数据中的某些点之后将数据移动到新列。我的数据分布在多个只有一些共同元素的数据帧中,所以我希望能够创建一个循环来清理数据集。我正在寻找一个函数,在第一次之后有某些文本,例如“Total”,在一行中,下面的所有数据都移动到一个新的列。
第一的 | 第二 | 第三 |
---|---|---|
一 | 1 | |
一 | 1 | |
全部的 | 2 | |
二 | 2 | |
二 | 2 | |
全部的 | 2 |
我希望我的数据看起来与下面类似,但由于数据的可变性,我很难找到可以轻松复制的解决方案。
剩下 | 中央 | 正确的 | 第四 |
---|---|---|---|
一 | 1 | 二 | 2 |
一 | 1 | 二 | 2 |
全部的 | 1 | 全部的 | 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
您可能会注意到您的数据分为两组。您仍然可以,cbind()
或者bind_cols()
如果您愿意,可以轻松地
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
推荐阅读
- javascript - JS 回调:延续传递还是糖果工厂风格?
- maven - Kurento:One2one 视频通话未到达对端
- vba - Excel 多个 if 语句运行多个宏
- c - 如何在 C 中为素数筛算法设置可变长度数组?
- python-3.x - 当您想读取数据时,是否可以在 mongoengine 中使用逻辑运算符
- fiware - lwm2m 客户端和物联网代理之间的通信问题
- r - R用循环填充列表列表会产生错误
- spring-boot - Spring Webflux + JPA: Reactive Repositories are not supported by JPA
- python - 尝试从 python 代码发送电子邮件(到 gmail 帐户)时出现奇怪的错误
- git - Find a commit merging two ancestors