我正在尝试根据其他两列的值创建一个新列。初始列中的值为1和2.对于新列,如果前两列中任何一列中的值为1,则我希望该值为1,否则为0。 (如果此人是Vegetarian
或Vegan
,则VegYesNo
列应为1.否则,应为0)。
Vegetarian Vegan VegYesNo
1 2 1
2 2 0
2 1 1
我已经在这里搜索了其他问题并且找不到给我答案的问题,但是如果你知道一个有效的解决方案的问题,请告诉我。
答案 0 :(得分:1)
你可以这样做:
mydata$VegYesNo <- as.integer(rowSums(mydata == 1) > 0)
或者用:
mydata$VegYesNo <- 1 * (rowSums(mydata == 1) > 0)
结果:
> mydata
Vegetarian Vegan VegYesNo
1 1 2 1
2 2 2 0
3 2 1 1
数据:
mydata <- read.table(text="Vegetarian Vegan VegYesNo
1 2 1
2 2 0
2 1 1", header=TRUE)[,-3]
答案 1 :(得分:0)
我想你有data.frame
data = data.frame(vegetarian = c(1,2,2),Vegan = c(2,2,1))
data$VegYesNo = as.numeric(data$vegetarian==1 | data$Vegan==1)
答案 2 :(得分:0)
使用dplyr
包:
mydf <- text <- "Vegetarian Vegan
1 2
2 2
2 1"
mydf <- read.table(text = text, header = TRUE)
library(dplyr)
mydf %>%
mutate(VegYesNo=case_when(
Vegetarian==1 | Vegan==1 ~ 1,
TRUE ~ 0
))
结果是:
Vegetarian Vegan VegYesNo
1 1 2 1
2 2 2 0
3 2 1 1