gpt4 book ai didi

r - 在 R 中复制行并创建新变量

转载 作者:行者123 更新时间:2023-12-04 10:45:13 25 4
gpt4 key购买 nike

我有以下数据,我想根据 Category2 在 Category3 和 Category4 中是否有 Y 来创建类别 6。 IE。如果 Category3 == Y,则 Category6 == Cat3,如果 Category4 == Y,则 Category6 == Cat4。

因为 Orange 和 Grape 对于 Category3 和 Category4 都有 Ys,所以我想复制该行以保持该行中的其他所有内容相同:

有:

Category1 Category2 Category3  Category4  Category5 
Phase 1 Apple Y N 5
Phase 1 Berry N Y 3
Phase 2 Orange Y Y 4
Phase 2 Grape Y Y 2

想要

Category1 Category2 Category3  Category4  Category5 Category6 
Phase 1 Apple Y N 5 Cat3
Phase 1 Berry N Y 3 Cat4
Phase 2 Orange Y Y 4 Cat3
Phase 2 Orange Y Y 4 Cat4
Phase 2 Grape Y Y 2 Cat3
Phase 2 Grape Y Y 2 Cat4

这是一个我发现与我的非常相似的示例,但我似乎无法正确地将其拟合到我的数据中,因为我试图保留其他变量。我能做些什么来保留这些吗?

Duplicating Rows by creating unique columns

转载:

dat <- data.frame(Category1 = c("Phase 1", "Phase 1", "Phase 2", "Phase 2"),
Category2 = c("Apple", "Berry", "Orange", "Grape"),
Category3 = c("Y", "N", "Y", "Y"),
Category4 = c("N", "Y", "Y", "Y"),
Category5 = c("5", "3", "4", "2"))

最佳答案

这是一个基本的 R 方法。 dat 来自 Tyler's answer .

nm = c("Category3", "Category4")
ind = which(dat[nm] == "Y", arr.ind = TRUE)
ind = ind[order(ind[,1], ind[,2]),]
transform(dat[ind[,1],], Category6 = nm[ind[,2]])
# Category1 Category2 Category3 Category4 Category5 Category6
#1 Phase 1 Apple Y N 5 Category3
#2 Phase 1 Berry N Y 3 Category4
#3 Phase 2 Orange Y Y 4 Category3
#3.1 Phase 2 Orange Y Y 4 Category4
#4 Phase 2 Grape Y Y 2 Category3
#4.1 Phase 2 Grape Y Y 2 Category4

关于r - 在 R 中复制行并创建新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57838347/

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