簡體   English   中英

學習 R:如何輸出具有對應於某些 x 向量的索引的某些 y 向量元素的元素?

[英]Learning R: How do I output the element of certain y vector elements with indices that correspond to certain x vectors?

所以我有兩個向量,劑量和性別。 劑量是一個長度為 100 的數字向量,而性別是一個長度為 100 的具有“女性”和“男性”值的向量。 如果我定義什么是高劑量值(即高劑量為 40、50、60 等)並且我只想要女性患者,我將如何輸出類似於以下示例輸出的內容?

樣本輸出

[1]“女性高劑量患者 1 的劑量為 63”

[1]“女性高劑量患者 2 的劑量為 70”

[1]“女性高劑量患者 3 的劑量為 63.07”

[1]“女性高劑量患者 4 的劑量為 58”

[1]“女性高劑量患者 5 的劑量為 75.25”

所以首先讓我為GenderDose創建一些虛擬數據作為向量:

Gender <- sample(c("Male", "Female"), 100, replace = TRUE)
Dose <- round(runif(100, min = 30, max = 70),2)

我們還將在這里定義high_dose ,它可以是您喜歡的任何閾值:

high_dose <- 50

創建一個data.frame

df <- data.frame(Dose = Dose,
                 Gender = Gender)

使用dplyr更容易進行數據操作:

# if you haven't already done so, you'll want to install.packages("dplyr")
library(dplyr)
df %>% 
  mutate(Level = ifelse(Dose >= high_dose, "High", "Low"),
         Patient = row_number(),
         Output = paste(Gender, Level, "Dose Patient", Patient, "has dose", Dose))

讓我們分解一下。 首先, mutate將向我們的df添加新列。 我們將從Level開始,使用ifelse語句判斷Dose是否大於或等於我們定義的high_dose

接下來,我任意指定Patient作為行號。 如果患者編號很重要,您可能需要更改此設置。

最后, Output將這些列粘貼在一起,引號中的任何內容都是一行一行的。 如果你只對輸出感興趣,你可以簡單地通過df$Output調用它

data.table方法:

library(data.table)
df <- data.table(Dose = Dose,
                 Gender = Gender)

df[, Level := ifelse(Dose >= high_dose, "High", "Low")]
df[, Patient := 1:100]
df[, Output := paste(Gender, Level, "Dose Patient", Patient, "has dose", Dose)]

df$Output

替代路線:

說實話,您只需使用paste功能即可完成所有這些操作,但我認為dplyr是一種更好的方式來逐行查看數據發生的情況。

paste(Gender, ifelse(Dose >= high_dose, "High", "Low"), 
      "Dose Patient", 1:100, "has dose", Dose)

暫無
暫無

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

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