gpt4 book ai didi

r - 创建一个新变量,该变量从现有的数据框中获取不同的列,取决于分组变量

转载 作者:行者123 更新时间:2023-12-04 19:57:39 25 4
gpt4 key购买 nike

我不知道从哪里开始这段代码。我想将一个新变量附加到现有数据框中,该数据框根据分组变量采用不同的列。例如,假设我有列

    A  B  C  D  E  F
1 2 3 6 11 12
1 7 5 10 8 9
2 19 2 4 5 6
2 8 4 3 1 1

我想附加一个新列“G”,如果 A 为 1,则为 B 列,如果 A 为 2,则为 D 列
    A  B  C  D  E  F   G
1 2 3 6 11 12 2
1 7 5 10 8 9 7
2 19 2 4 5 6 4
2 8 4 3 1 1 3

谢谢

最佳答案

这里有几个选项。

假设你的 data.frame 被称为 DF
基本的 [ 和索引

# make everything in G =  B
DF$G <- DF$B
# replace those cases where A==2 with D
DF$G[DF$A==2] <- DF$D[DT$A==2]

使用 ifelse

只需要一个 ifelse 语句,因为 A 是 1 或 2
DF$G <- ifelse(DF$A==2, DF$D, DF$B)

使用数据表

我喜欢 data.table,为了内存效率和编码优雅
library(data.table)
# create a data.table with A as the key

DT <- data.table(DF, key = 'A')
# where the key (A) == 1 ], then assign G = B
DT[.(1), G := B]
# and where the key (A) == 2, then assign G = D
DT[.(2), G := D]

漂亮优雅!

关于r - 创建一个新变量,该变量从现有的数据框中获取不同的列,取决于分组变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14744291/

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