試圖讓所有變數都包含在內 - 因此,如果受訪者對 9 個是/否變數中的至少一個回答“是”,那么他們將被置于整體變數中的“是”類別中。
我已經這樣做了:
overallvariable <- ifelse(df$v1 == "yes" | df$v2 == "yes" | df$v3 == "yes" | df$v4 == "yes" |df$v5 == "yes" | df$v6 == "yes" | df$v7 == "yes" | df$v8 == "yes" | df$v9 == "yes", "yes", "no")
然而,table(overallvariable)出現了:
| 不 |
|---|
| ## |
代替
| 是的 | 不 |
|---|---|
| ### | ## |
感謝您的幫助!
注意:在我添加 v9 之前,一切似乎都可以正常作業 注意:只是玩弄了 v9 的位置,它似乎不是附加到變數的問題,因為它產生了我需要的輸出。所以添加第九個條件似乎是一個問題。
uj5u.com熱心網友回復:
這是一種data.table方法,也是如何創建一些示例資料的限制;-)
樣本資料
set.seed(123)
mydata <- data.frame(id = 1:15,
v1 = sample(c("yes", "no"), 15, replace = TRUE),
v2 = sample(c("yes", "no"), 15, replace = TRUE),
v3 = sample(c("yes", "no"), 15, replace = TRUE),
v4 = sample(c("yes", "no"), 15, replace = TRUE))
代碼
library(data.table)
# convert to data.table formast
setDT(mydata)
# columns to look in
cols <- grep("v[1-4]", names(mydata), value = TRUE)
# initialise overallvariable to "no"
mydata[, overallvariable := "no"]
# if 1 or more columns in cols have the value "yes", set overallvariable to "yes"
mydata[ rowSums(mydata[, ..cols] == "yes", na.rm = TRUE) >= 1,
overallvariable := "yes"]
輸出
# id v1 v2 v3 v4 overallvariable
# 1: 1 yes yes yes yes yes
# 2: 2 yes no no yes yes
# 3: 3 yes yes yes no yes
# 4: 4 no yes no yes yes
# 5: 5 yes yes no yes yes
# 6: 6 no yes yes no yes
# 7: 7 no no yes yes yes
# 8: 8 no yes yes yes yes
# 9: 9 yes yes yes yes yes
#10: 10 yes yes no yes yes
#11: 11 no yes yes no yes
#12: 12 no no no no no
#13: 13 no no no yes yes
#14: 14 yes yes yes no yes
#15: 15 no no yes yes yes
uj5u.com熱心網友回復:
基礎 R:
df$overallvariable <- c('no','yes')[1 (rowSums(df == "yes") > 0)]
資料:
df <- structure(list(V1 = c("no", "no", "no", "no", "no", "no", "no",
"no", "no", "no"), V2 = c("yes", "yes", "yes", "no", "no", "no",
"yes", "no", "yes", "yes"), V3 = c("yes", "yes", "yes", "no",
"no", "no", "yes", "no", "yes", "yes"), V4 = c("no", "no", "no",
"no", "no", "no", "no", "no", "no", "no"), V5 = c("yes", "yes",
"yes", "no", "no", "no", "yes", "no", "yes", "yes"), V6 = c("no",
"no", "no", "no", "no", "no", "no", "no", "no", "no"), V7 = c("no",
"no", "no", "no", "no", "no", "no", "no", "no", "no"), V8 = c("yes",
"yes", "yes", "no", "no", "no", "yes", "no", "yes", "yes"), V9 = c("no",
"no", "no", "no", "no", "no", "no", "no", "no", "no"), V10 = c("no",
"no", "no", "no", "no", "no", "no", "no", "no", "no")), class = "data.frame", row.names = c(NA,
-10L))
uj5u.com熱心網友回復:
dplyr 包具有所需轉換的完美功能:if_any.
library(dplyr)
df %>% mutate(overallvariable = if_any(V1:V10, ~ .x=='yes') %>% ifelse('yes', 'no'))
我們也可以使用 purrr::reduce
library(purrr)
library(dplyr)
df %>% mutate(overallvariable = reduce(across(V1:V10, ~.x=='yes'), `|`) %>% ifelse('yes', 'no'))
使用來自@TarJae 的資料輸出:
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 overallvariable
1 no yes yes no yes no no yes no no yes
2 no yes yes no yes no no yes no no yes
3 no yes yes no yes no no yes no no yes
4 no no no no no no no no no no no
5 no no no no no no no no no no no
6 no no no no no no no no no no no
7 no yes yes no yes no no yes no no yes
8 no no no no no no no no no no no
9 no yes yes no yes no no yes no no yes
10 no yes yes no yes no no yes no no yes
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/346313.html
上一篇:Python阻止if內部if?
