首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >寻找分裂堆栈形状::cSplit_e()的逆

寻找分裂堆栈形状::cSplit_e()的逆
EN

Stack Overflow用户
提问于 2022-01-30 23:07:06
回答 2查看 45关注 0票数 0

我想做的是相反的事情:

代码语言:javascript
复制
library(splitstackshape)
temp <- head(concat.test) [-3:-4]
cSplit_e(temp, "Likes", fill = 0)[-2]

所以还这个:

回到:

EN

回答 2

Stack Overflow用户

发布于 2022-01-31 01:26:14

代码语言:javascript
复制
set.seed(42)
dat <- data.table(name = LETTERS[1:5])[, c(.SD, replicate(6, sample(0:1, size=5, replace=TRUE), simplify=FALSE))]
dat
#      name    V2    V3    V4    V5    V6    V7
#    <char> <int> <int> <int> <int> <int> <int>
# 1:      A     0     1     0     0     0     1
# 2:      B     0     1     1     1     0     0
# 3:      C     0     1     0     1     0     0
# 4:      D     0     0     1     1     0     0
# 5:      E     1     1     0     1     0     0

dat[, .(name, Likes = apply(as.matrix(.SD[,-1]), 1, function(z) toString(which(z > 0))))]
#      name   Likes
#    <char>  <char>
# 1:      A    2, 6
# 2:      B 2, 3, 4
# 3:      C    2, 4
# 4:      D    3, 4
# 5:      E 1, 2, 4
票数 2
EN

Stack Overflow用户

发布于 2022-01-31 01:50:46

另一种方法是以长格式获取数据,并将每个name中有1列的列连接起来。

使用@r2evans的数据-

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

dat %>%
  pivot_longer(cols = -name, names_to = 'col') %>%
  mutate(col = sub('V', '', col)) %>%
  group_by(name) %>%
  summarise(Likes = toString(col[value == 1]))

#  name  Likes  
#  <chr> <chr>  
#1 A     3, 7   
#2 B     3, 4, 5
#3 C     3, 5   
#4 D     4, 5   
#5 E     2, 3, 5
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70919744

复制
相关文章

相似问题

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