gpt4 book ai didi

r - 将一列变量和一列值分成 r 中的各个组成部分

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

我有以下数据框(df),其中对于每个参与者,“成绩”列是通过将分数粘贴到某些项目上而构建的。例如,参与者“1”在一项项目“a”上获得了 4 分,在项目“b”上获得了 7 分,在项目“c”上获得了 8 分。 (请注意,成绩是一个字符)。另请注意,参与者“2”只有两个分数(假设这是与参与者“1”不同的考试)。

df = data.frame(participants = c(1, 1, 2),
variables = c('abc', 'ef', 'abc'),
grades= c('478', '58', '942'),
stringsAsFactors = FALSE)


participants variables grades
1 1 abc 478
2 1 ef 58
3 2 abc 942

(我的数据包含 100,000 行,如上所示。)

我想将数据转换成整洁的样式,如下:

  participants variables grades
1 1 a 4
2 1 b 7
3 1 c 8
4 1 e 5
5 1 f 8
6 2 a 9
7 2 b 4
8 2 c 2

这是我所做的

variables =  lapply(X=1:length(df$variables), FUN=function(X) {
strsplit(df$variables[X], "") %>% .[[1]]}) %>% reduce(c)

grades = lapply(X=1:length(df$grades), FUN=function(X) {
strsplit(df$grades[X], "") %>% .[[1]]}) %>% reduce(c)

participants = lapply(X=1:length(df$participants), FUN=function(X) {
rep(df$participants[X], nchar(df$variables[X])) })%>% reduce(c)

data.frame(participants, variables, grades)

然而,在我的机器上使用我的真实数据需要几分钟,而且我觉得这确实效率不高,因为我需要 3 个不同的调用。

任何关于获取整洁数据的有效方法的想法都将受到欢迎(我与 tidyr/dplyr 合作)

最佳答案

您可以使用strsplitunnest:

library(tidyverse)
df %>% mutate_at(vars(variables,grades),~strsplit(.,"")) %>% unnest

# participants variables grades
# 1 1 a 4
# 2 1 b 7
# 3 1 c 8
# 4 1 e 5
# 5 1 f 8
# 6 2 a 9
# 7 2 b 4
# 8 2 c 2

关于r - 将一列变量和一列值分成 r 中的各个组成部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49736647/

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