gpt4 book ai didi

r - 从 data.frame 行中提取字符列表值并 reshape 数据

转载 作者:行者123 更新时间:2023-12-01 01:25:47 25 4
gpt4 key购买 nike

我有一个变量 x,每行都有字符列表:

dat <- data.frame(id = c(rep('a',2),rep('b',2),'c'), 
x = c('f,o','f,o,o','b,a,a,r','b,a,r','b,a'),
stringsAsFactors = F)

我想 reshape 数据,使每一行都是唯一的 (id, x) 对,例如:

dat2 <- data.frame(id = c(rep('a',2),rep('b',3),rep('c',2)), 
x = c('f','o','a','b','r','a','b'))

> dat2
id x
1 a f
2 a o
3 b a
4 b b
5 b r
6 c a
7 c b

我试图通过拆分字符列表并在每一行中只保留唯一的列表值来做到这一点:

dat$x <- sapply(strsplit(dat$x, ','), sort)
dat$x <- sapply(dat$x, unique)
dat <- unique(dat)

> dat
id x
1 a f, o
3 b a, b, r
5 c a, b

但是,我不确定如何继续将行列表转换为单独的行条目。

我将如何做到这一点? 或者是否有一种更有效的方法来转换字符串列表以按照所述 reshape 数据?

最佳答案

您可以使用tidytext::unnest_tokens:

library(tidytext)
library(dplyr)

dat %>%
unnest_tokens(x1, x) %>%
distinct()

id x1
1 a f
2 a o
3 b b
4 b a
5 b r
6 c b
7 c a

关于r - 从 data.frame 行中提取字符列表值并 reshape 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50052574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com