gpt4 book ai didi

r - 根据其他列的其他行中的值创建一个新列

转载 作者:行者123 更新时间:2023-12-02 02:18:33 24 4
gpt4 key购买 nike

我有一个包含三列的数据框(df),如下所示:

A   B   C
1 15 -1.60
15 17 -1.49
3 13 2.59
17 18 3.34

我想创建一个新列“D”,其中每一行都是“C”列中值的副本,在该列中,“A”列的值与“B”列的值相等”,如果没有相等的值,则输入“NA”;如下所示:

A   B   C   D
1 15 -1.6 -1.49
15 17 -1.49 3.34
3 13 2.59 NA
17 1 3.34 -1.6

我尝试编写一个循环来从“C”列生成“D”列,但它不起作用:

for(i in 1:nrow(df)) {
if (df$B==df$A){
df$D==df$C
}else{
df$D==NA}
}

除了循环之外,还有什么方法可以制作此专栏吗?如果没有,我该如何使用循环?

最佳答案

这里不需要循环。很多时候(阅读:大多数时候)如果您单独保留 for 循环并使用矢量化函数,您将获得更好/更快的结果(在 R 中)。

这是一个 data.table 方法,使用引用连接

library( data.table )

df <- fread("A B C
1 15 -1.60
15 17 -1.49
3 13 2.59
17 1 3.34")

#or use the code: setDT( df )

df[ df , D := i.C, on = .(B = A)][]
# A B C D
# 1: 1 15 -1.60 -1.49
# 2: 15 17 -1.49 3.34
# 3: 3 13 2.59 NA
# 4: 17 1 3.34 -1.60

关于r - 根据其他列的其他行中的值创建一个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66786982/

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