gpt4 book ai didi

重新排列和排序

转载 作者:行者123 更新时间:2023-12-01 08:48:16 26 4
gpt4 key购买 nike

我有以下数据

ID v1 v2 v3 v4 v5 
1 1 3 6 4
2 4 2
3 3 1 8 5
4 2 5 3 1

我可以重新排列数据,以便它会根据每个变量(v1 到 v5)中的值自动创建新列并分配二进制值(1 或 0)吗?

例如在第一行,我有 1、3、4 和 6 的值。R 可以自动创建 6 个虚拟变量以将值分配给相应的列,如下所示:

 ID dummy1 dummy2 dummy3 dummy4 dummy5 dummy6
1 1 0 1 1 0 1

拥有这样的东西:

ID c1 c2 c3 c4 c5 c6 c7 c8
1 1 0 1 1 0 1 0 0
2 0 1 0 1 0 0 0 0
3 1 0 1 0 1 0 0 1
4 1 1 1 0 1 0 0 0

谢谢。

最佳答案

我们可以使用 base R 来做到这一点。遍历数据集除第一列以外的各行,获取该行中max值的序列,查看该行中有多少个,将其转换为integer使用 as.integer,在末尾附加 NA 以使 list 输出和 cbind 中的长度相同与第一列

lst <- apply(df[-1], 1, function(x) as.integer(seq_len(max(x, na.rm = TRUE)) %in% x))
res <- cbind(df[1], do.call(rbind, lapply(lst, `length<-`, max(lengths(lst)))))
res[is.na(res)] <- 0
colnames(res)[-1] <- paste0('c', 1:8)
res
# ID c1 c2 c3 c4 c5 c6 c7 c8
#1 1 1 0 1 1 0 1 0 0
#2 2 0 1 0 1 0 0 0 0
#3 3 1 0 1 0 1 0 0 1
#4 4 1 1 1 0 1 0 0 0

关于重新排列和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49071348/

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