在R数据帧中使用if-else语句
是否有一种方法可以在一行中执行最后4个操作,以简化数据帧的if-else语句。我们可以比较整个数据帧(第一列除外),检查值是否大于0,并将该值转换为数字在R数据帧中使用if-else语句,r,dataframe,R,Dataframe,是否有一种方法可以在一行中执行最后4个操作,以简化数据帧的if-else语句。我们可以比较整个数据帧(第一列除外),检查值是否大于0,并将该值转换为数字 d = data.frame(A=c(1,1),B=c(0,20),C=c(0,10)) d$B[d$B>0] = TRUE d$C[d$C>0] = TRUE d$B[d$B==0] = FALSE d$C[d$C==0] = FALSE 我们可以比较整个数据帧(第一列除外),检查值是否大于0,并将该值转换为数字 d = dat
d = data.frame(A=c(1,1),B=c(0,20),C=c(0,10))
d$B[d$B>0] = TRUE
d$C[d$C>0] = TRUE
d$B[d$B==0] = FALSE
d$C[d$C==0] = FALSE
我们可以比较整个数据帧(第一列除外),检查值是否大于0,并将该值转换为数字
d = data.frame(A=c(1,1),B=c(0,20),C=c(0,10))
d$B[d$B>0] = TRUE
d$C[d$C>0] = TRUE
d$B[d$B==0] = FALSE
d$C[d$C==0] = FALSE
我们可以使用
tidyverse
d[-1] <- d[-1] > 0
# A B C
#1 1 FALSE FALSE
#2 1 TRUE TRUE
我们可以使用
tidyverse
d[-1] <- d[-1] > 0
# A B C
#1 1 FALSE FALSE
#2 1 TRUE TRUE
您可以使用dplyr的if_else,如下所示:
library(dplyr)
d %>%
mutate_at(2:3, funs(. > 0))
# A B C
#1 1 FALSE FALSE
#2 1 TRUE TRUE
库(dplyr)
d=数据帧(A=c(1,1),B=c(0,20),c=c(0,10))
d$B0,“真”、“假”)
d$C0,“真”、“假”)
A、B、C
1假1假
2.1正确
您可以使用dplyr的if\u else,如下所示:
library(dplyr)
d %>%
mutate_at(2:3, funs(. > 0))
# A B C
#1 1 FALSE FALSE
#2 1 TRUE TRUE
库(dplyr)
d=数据帧(A=c(1,1),B=c(0,20),c=c(0,10))
d$B0,“真”、“假”)
d$C0,“真”、“假”)
A、B、C
1假1假
2.1正确
您只想对离开A
的B
和C
列执行此操作?仅对B和C执行此操作)值也可以为负值吗?或者它是大于0还是大于0?d[c(“B”,“c”)],0)
?我认为这应该是某个问题的重复,找不到接近的答案。你只想对B
和c
留下a
?是的,仅对B和c)的列执行此操作,值也可以是负值吗?或者它是大于0还是大于0?d[c(“B”,“c”)],0)
?我认为这应该是某个问题的重复,找不到接近的东西,因此回答。如果B>0返回“TRUE”,如果不是“FALSE”,我的观点是:你的ifelse调用返回的与d$B>0
完全相同,或者实际上与as.character(d$B>0)
相同,这是另一部分我没有找到逻辑class(“TRUE”)
vsclass(TRUE)
如果B>0返回“TRUE”,如果不是“FALSE”,我的观点是:你的ifelse调用返回的值与d$B>0
完全相同,或者实际上与as.character(d$B>0)
相同,这是我没有找到逻辑class(“TRUE”)的另一部分
vsclass(TRUE)