合并R中的多行
Posted
技术标签:
【中文标题】合并R中的多行【英文标题】:Merge multiple rows in R 【发布时间】:2022-01-11 21:51:33 【问题描述】:我目前有一些数据,其中人们回答了有关行为的问题。有些问题是对过去和当前行为的总体陈述(这两个条件),而其他问题是针对特定问题框架(条件 x 和 y)而询问的有关行为的问题。
我想合并这些行,因此每个参与者有两行
一行将有他们对标记为“两者”的条件的所有答案和对条件“x”的答案 另一行将有他们对条件的所有答案都标记为“两者和对条件“y”的答案。我尝试了几种分组解决方案,但似乎无法让它发挥作用。还看了这些答案:
Merging multiple rows into one row by several conditions in R Multiples rows to one row in R这些都不起作用。
下面的示例代码。感谢任何帮助,因为目前我只能在 excel 中复制粘贴,这并不理想。
library(tidyverse)
a <-
tibble(id = c(rep(1, 3), rep(2,3), rep(3, 3)) , condition = rep(c("both", "x", "y"),3), belief = c(4.8, NA, NA, 3.2, NA, NA, 6.5, NA, NA), past = c(1.8, NA, NA, 4.8, NA, NA, 2.6, NA, NA), current= c(1.8, NA, NA, 3.8, NA, NA, 3.1, NA, NA), feel = c(NA, .6, 1, NA, 2.1, 2.3, NA, 2.6, 1.5), willing = c(NA, 3.6, 205, NA, 2.1, 2.3, NA, 1.3, 0.3))
#what my data currently looks like
a
#> # A tibble: 9 × 7
#> id condition belief past current feel willing
#> <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 1 both 4.8 1.8 1.8 NA NA
#> 2 1 x NA NA NA 0.6 3.6
#> 3 1 y NA NA NA 1 205
#> 4 2 both 3.2 4.8 3.8 NA NA
#> 5 2 x NA NA NA 2.1 2.1
#> 6 2 y NA NA NA 2.3 2.3
#> 7 3 both 6.5 2.6 3.1 NA NA
#> 8 3 x NA NA NA 2.6 1.3
#> 9 3 y NA NA NA 1.5 0.3
b <-
tibble(id = c(rep(1, 2), rep(2,2), rep(3, 2)), condition = rep(c("x", "y"),3), belief = c(4.8, 4.8, 3.2, 3.2, 6.5, 6.5), past = c(1.8, 1.8, 4.8, 4.8, 2.6, 2.6), current= c(1.8, 1.8, 3.8, 3.8, 3.1, 3.1), feel = c(.6, 1, 2.1, 2.3, 2.6, 1.5), willing = c( 3.6, 205, 2.1, 2.3, 1.3, 0.3))
#what I want my data to look like
b
#> # A tibble: 6 × 7
#> id condition belief past current feel willing
#> <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 1 x 4.8 1.8 1.8 0.6 3.6
#> 2 1 y 4.8 1.8 1.8 1 205
#> 3 2 x 3.2 4.8 3.8 2.1 2.1
#> 4 2 y 3.2 4.8 3.8 2.3 2.3
#> 5 3 x 6.5 2.6 3.1 2.6 1.3
#> 6 3 y 6.5 2.6 3.1 1.5 0.3
【问题讨论】:
【参考方案1】:考虑由fill
组成的组,然后将filter
排除在“两者”行之外
library(dplyr)
library(tidyr)
out <- a %>%
group_by(id) %>%
fill(belief:willing, .direction = "downup") %>%
ungroup %>%
filter(condition != 'both')
-检查
> identical(out, b)
[1] TRUE
【讨论】:
以上是关于合并R中的多行的主要内容,如果未能解决你的问题,请参考以下文章