我有一个数据帧,看起来差不多是这样的:

df<-tibble(segments=c('Hello','Hello', 'Hello', 'Block', 'Block', 'Hi', 'Hi', 'Hi'),
          year=c(2015, 2015,2015,2017, 2017, 2015,2015,2015),
          Colour=c('Yellow', NA,NA, 'Pink', NA, NA, 'Green', NA),
          Eval=c(NA, 'Yes',NA, NA, 'No', 'No', NA, NA),
          Ball=c(NA, NA, 'A', NA, NA, NA,NA, 'B'))

我想合并各行,以便每一行都响应一个段,如下所示:

df1<-tibble(segments= c('Hello', 'Block', 'Hi'),
       year=c(2015, 2017, 2015),
       Colour=c('Yellow', 'Pink', 'Green'),
       Eval=c('Yes', 'No', 'No'),
       Ball=c('A', 'B', NA))

因为变量不是数值型的,所以我不能与GROUP_BY/SUMMISE ALL合并. 关于数据帧,我所知道的唯一一件事就是,每个"分组段"每列最多只能有一个值,其余的都是Nas.

提前谢谢!

推荐答案

try

library(dplyr)# version >= 1.1.0
df %>%
   reframe(across(Colour:Ball, ~ .x[!is.na(.x)][1]), 
   .by = c(segments, year))

-输出

# A tibble: 3 × 5
  segments  year Colour Eval  Ball 
  <chr>    <dbl> <chr>  <chr> <chr>
1 Hello     2015 Yellow Yes   A    
2 Block     2017 Pink   No    <NA> 
3 Hi        2015 Green  No    B    

df %>%
   group_by(segments, year) %>% 
   summarise(across(everything(),  ~ .x[!is.na(.x)][1]), .groups = "drop")

R相关问答推荐

使用列表列作为case_when LHS的输入

如何将图案添加到ggplot中的一个类别

多重RHS固定估计

在R中将特定列的值向右移动

错误:非常长的R行中出现意外符号

为什么当用osmdata映射R时会得到相邻状态?

合并DFS列表并将索引提取为新列

如何删除最后一个可操作对象

使用`Watch()`和`renderUI()`时,不再满足仍出现在SHILINY AFTER条件中的条件输入

根据1个变量绘制 colored颜色 发散的 map ,由另一个变量绘制饱和度,ggplot2不工作

识别连接的子网(R-igraph)

从多个可选列中选取一个值到一个新列中

如何计算R glm probit中的线性预测因子?

如何在使用箭头R包(箭头::OPEN_DATASSET)和dplyr谓词时编写具有整齐计算的函数?

从数据创建数字的命名列表.R中的框

如何在PrePlot()中将多个元素设置为斜体

删除字符串R中的重复项

为什么函数toTitleCase不能处理english(1),而toupper可以?

无法将条件case_when()应用于使用!!创建的新变量Mutations

使用函数从R中的列中删除标高