簡體   English   中英

根據 R 中的列值在數據框末尾添加一列

[英]Add a column at the end of a data frame based on the column values in 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))

如果值大於或等於 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        -

如果 dataframe 中的所有數字列都大於等於 1.2,則可以指定'Pass'

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      -

或者您可以使用 dplyr package 中的 case_when:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM