gpt4 book ai didi

将列中的值替换为同一数据框中另一列中的相应值

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

我试图匹配一列中的特定值并将其替换为另一列(同一行)中的相应值。这可能很容易...我一直在尝试使用 for loopsubsubsetdata 找到解决方案。表 但我没有成功。必须有一个巧妙的方法来做到这一点。

示例数据,我们旨在将第一列中的 a 与第二列中的对应值交换并再次输出该列。

df <- data.frame(rbind(c('a','D'),c('H','W'),c('Q','E'),c('a','F'),c('U','P'),c('a','B')))

df$X1 <- as.character(df$X1)
df$X2 <- as.character(df$X2)

# not working
for (i in seq_along(df$X1)){
a <- df$X1[i]
b <- df$X2[i]
x <- ifelse(a[i=='a'], a[i]<-b[i], do.nothing )
print(x)
}

输出会是这样的;

   X1 X2
1 D a
2 H W
3 Q E
4 F a
5 U P
6 B a

(开关不是必需的)。这是我感兴趣的第一列。

任何指针将不胜感激,谢谢!

最佳答案

有几种选择。以下是三个:

最基本的,使用 data.frames :

df[ df$X1 == "a" , "X1" ] <- df[ df$X1 == "a", "X2" ]

更简洁,使用 with:

df$X1 <- with( df, ifelse( X1 == "a", X2, X1 ) )

最简洁透明的使用data.tables

library(data.table) ## >= 1.9.0
setDT(df) ## converts to data.table by reference, no need for `<-`

df[ X1 == "a", X1 := X2 ]

关于将列中的值替换为同一数据框中另一列中的相应值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22814515/

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