#r
#r
Вопрос:
У меня есть фрейм данных следующим образом
structure(list(ID = c("A142867.12", "F134242.15", "H136244.11",
"Y184937.13"), Name = c("BB", "PP", "II", "WW"), qusa = c(10.0341,
12.7213, 0.157605, 0), nhg = c(24.7632, 50.562, 0.247947, 0.164736
), opk = c(26.931, 5.9474, 0.79539, 0)), class = "data.frame", row.names = c(NA,
-4L))
Мне просто нужно добавить еще один столбец (результат) с тегом (pass), если значения больше или равны 1.2, как это
ID Name qusa nhg opk Result
A142867.12 BB 10.0341 24.7632 26.931 Pass
F134242.15 PP 12.7213 50.562 5.9474 Pass
H136244.11 II 0.157605 0.247947 0.79539 -
Y184937.13 WW 0 0.164736 0 -
Комментарии:
1. Мне нужно добавить один столбец с именем Results в конце на основе значений
2. Необходимо напечатать pass, если все столбцы имеют больше или равны 1,2
Ответ №1:
Вы можете назначить 'Pass'
, если все числовые столбцы в фрейме данных больше, чем равно 1.2.
cols <- sapply(df, is.numeric)
df$result <- ifelse(rowSums(df[cols] < 1.2) == 0, 'Pass', '-')
#Without ifelse
#df$result <- c('-', 'Pass')[(rowSums(df[cols] < 1.2) == 0) 1]
df
# ID Name qusa nhg opk result
#1 A142867.12 BB 10.034100 24.763200 26.93100 Pass
#2 F134242.15 PP 12.721300 50.562000 5.94740 Pass
#3 H136244.11 II 0.157605 0.247947 0.79539 -
#4 Y184937.13 WW 0.000000 0.164736 0.00000 -
Ответ №2:
Или вы можете использовать case_when из пакета dplyr:
library(dplyr)
#your data
abc <- structure(list(ID = c("A142867.12", "F134242.15", "H136244.11", "Y184937.13"),
Name = c("BB", "PP", "II", "WW"),
qusa = c(10.0341, 12.7213, 0.157605, 0),
nhg = c(24.7632, 50.562, 0.247947, 0.164736),
opk = c(26.931, 5.9474, 0.79539, 0)),
class = "data.frame", row.names = c(NA, -4L))
# case_when
abc <- abc %>%
mutate(Results = case_when(qusa >= 1.2 | nhg >= 1.2 | opk >= 1.2 ~ "pass",
TRUE ~ "-"))
# View dataframe
View(abc)