gpt4 book ai didi

r - 根据 R 中另一列的值使用二进制变量填充新列

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

我是 R 和一般编码的新手,我需要一些帮助来连接 R 中的两个进程。 我有一个数据框:

X <- c(385, 386, 387, 388, 390, 391, 392, 393, 394, 395, 396, 398, 399, 400)

east<- seq(1,14,1)

north<- seq(1,14,1)

df2 <-data.frame(X,east,north)

我想做的是逐行查看 X 中的值并将它们相互比较以用二进制结果填充新列。例如,如果 X[1,] 和 X[2,] 是连续的,则新列值为 1,如果 X[1,] 和 X[2,] 不是连续的,则为 0。这段代码:

for(i in 1:nrow(df2)){
ifelse((df2$X[i+1]-df2$X[i] <= 1), print(1), print(0))
}

提供了我想要的信息,但我正在努力将其放入专栏。

[1] 1
[1] 1
[1] 1
[1] 0
[1] 1
[1] 1
[1] 1
[1] 1
[1] 1
[1] 1
[1] 0
[1] 1
[1] 1

我也试过这个:

df2$response <- NA
for(i in 1:nrow(df2)){
if(df2$X[i+1]-df2$X[i]==1){df2$response[i]<-1} else
if(df2$X[i+1]-df2$X[i]>1){df2$response[i]<-0}
}

但收到此错误:

Error in if (df2$X[i + 1] - df2$X[i] == 1) { : 
missing value where TRUE/FALSE needed

有什么建议吗?尖端?谢谢!

最佳答案

人们被神秘的解决方案束缚住了。只是:

df2$response <- c( head( df2$X, -1) - tail(df2$X, -1) <= 1, NA_integer_)

或者:

df2$response <-  c( diff(df2$X) <= 1, NA_integer_ )    

需要 NA 来解释最后一行没有什么可以减去的事实。使用 NA_integer_ 作为占位符而不是 NA 会导致将逻辑值强制转换为整数(默认情况下 NA 是逻辑类型)。

关于r - 根据 R 中另一列的值使用二进制变量填充新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23920694/

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