首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多行转换为单列

将多行转换为单列
EN

Stack Overflow用户
提问于 2018-02-23 19:16:38
回答 4查看 83关注 0票数 1

我使用的是R,我想将DataFrame-1转换为DataFrame-2

代码语言:javascript
复制
DataFrame-1
Variable1     Variable2
aa1           X1
aa1           Y2
aa1           Z1 
bb1           Y1
bb1           Y2 

我想要创建DataFrame-2,它将如下所示

代码语言:javascript
复制
Variable1     Variable2
aa1           X1, Y2, Z1
bb1           Y1, Y2
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-02-23 19:30:10

代码语言:javascript
复制
dat <- data.frame(Var1 = c("aa1", "aa1", "aa1", "bb1", "bb1"), Var2 = c("X1", "Y2", "Z1", "Y1", "Y2"), stringsAsFactors = FALSE)

cbind(Var1 = unique(dat$Var1), 
      Var2 = sapply(unique(dat$Var1), function(x) paste0(dat$Var2[dat$Var1 == x], collapse = ", "), USE.NAMES = F))

     Var1  Var2        
[1,] "aa1" "X1, Y2, Z1"
[2,] "bb1" "Y1, Y2" 
票数 0
EN

Stack Overflow用户

发布于 2018-02-23 19:34:19

代码语言:javascript
复制
library(dplyr)

df1 <- df %>%
  group_by(Variable1) %>%
  summarise(Variable2 = paste(Variable2, collapse = ", ")) %>%
  data.frame()
df1

产出如下:

代码语言:javascript
复制
  Variable1  Variable2
1       aa1 X1, Y2, Z1
2       bb1     Y1, Y2

样本数据:

代码语言:javascript
复制
df <- structure(list(Variable1 = c("aa1", "aa1", "aa1", "bb1", "bb1"
), Variable2 = c("X1", "Y2", "Z1", "Y1", "Y2")), .Names = c("Variable1", 
"Variable2"), class = "data.frame", row.names = c(NA, -5L))
票数 0
EN

Stack Overflow用户

发布于 2018-02-23 19:40:50

这是cars数据集的一个示例:

代码语言:javascript
复制
split <- split(cars$dist, cars$speed)  

a <- list(length(split))
for (i in 1:length(split)){

  a[i] = paste(split[[i]], sep = "", collapse = ", ")}

df <- data.frame(x = labels(split), y = unlist(a))

输出将如下所示:

代码语言:javascript
复制
    x                  y
1   4              2, 10
2   7              4, 22
3   8                 16
4   9                 10
5  10         18, 26, 34
6  11             17, 28
7  12     14, 20, 24, 28
8  13     26, 34, 34, 46
9  14     26, 36, 60, 80
10 15         20, 26, 54
11 16             32, 40
12 17         32, 40, 50
13 18     42, 56, 76, 84
14 19         36, 46, 68
15 20 32, 48, 52, 56, 64
16 22                 66
17 23                 54
18 24    70, 92, 93, 120
19 25                 85
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48954773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档