R折叠列以形成数字列表

标签 r

R中,我需要折叠列以形成具有数字列表类型的另一列。

就像我们将数字列表定义为l = c(1,2,3)

df <- read.table(text = "X  Y
a   26
a   3
a   24
b   8
b   1
b   4
", header = TRUE)

我正在尝试使用dplyr,但它给了我字符列表列

> df %>% group_by(X) %>% summarise(lst= paste0(Y, collapse = ","))
# A tibble: 2 x 2
  X     lst    
  <fct> <chr>  
1 a     26,3,24
2 b     8,1,4 

最佳答案

X分组,然后将Y汇总为列表

library(dplyr)
out <- df %>% 
  group_by(X) %>% 
  summarise(Y = list(Y))
out
# A tibble: 2 x 2
#  X     Y        
#  <fct> <list>   
#1 a     <int [3]>
#2 b     <int [3]>

Y 列现在看起来像这样

out$Y
#[[1]]
#[1] 26  3 24
#
#[[2]]
#[1] 8 1 4

nest 似乎是另一种选择,但这会导致 tibbles 的列表列(我认为不是你想要的)

df %>% 
  group_by(X) %>% 
  nest()
# A tibble: 2 x 2
#  X     data            
#  <fct> <list>          
#1 a     <tibble [3 × 1]>
#2 b     <tibble [3 × 1]>

关于R折叠列以形成数字列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54706254/

相关文章:

windows - 在 Windows 上使用 C++11 和 Rcpp 构建 R 包

r - ggplot2中离散发散尺度的中点

r - 按非结构化文本列分组以透视数据

r - 计算单个列中值的连续出现

r - 使用 CUDA 和 Rcpp 构建一个微型 R 包

r - 我如何知道 R 中此逻辑回归输出的优势比的分子使用了哪个概率?

r - 使用melt和ggplot绘制条形图

r - 如何导出正确的 TSV?

json - 当我尝试从 R 中的 JSON 文件中提取数据时出现问题

将长数据框 reshape 为宽数据框并使用一列作为前缀重命名新列