R свернуть столбец, чтобы сформировать числовой список - PullRequest
0 голосов
/ 15 февраля 2019

В 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 

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

A data.table решение:

library(data.table)
dt <- as.data.table(df)[, list(Y=list(Y)), by="X"]

> dt
   X        Y
1: a 26, 3,24
2: b    8,1,4
> dt$Y
[[1]]
[1] 26  3 24

[[2]]
[1] 8 1 4
0 голосов
/ 15 февраля 2019

сгруппируйте по X, затем суммируйте Y как list

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]>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...