簡體   English   中英

如何將 1 列中的數據分類為 R 中的新變量?

[英]How to categorize data from 1 column into a new variable in R?

我有一個關於兒童和青少年腫瘤的數據框(my_data),每個腫瘤都有一個特定的代碼。 然而,腫瘤可以分為 12 個主要組。 數字 11 t/m 20 對應於“I”,20 到 30 之間的數字對應於“II”(這一直持續到我們到達“XII”)。

此時,我的數據包括數字(11t/m 122)。 我需要將它們分為十二個主要組,並將它們添加為單獨的列(其中包括值“I”t/m“XII”)。

這些是我的前 10 行,讓您了解數據。

my_data

       key_P   key_T new_icccmain
       <dbl>   <dbl>        <dbl>
 1  96111201 5677620          112
 2 654431201 7250720           21
 3  39341201 6261720          116
 4 146291201 1087720          103
 5  38302201 2429720           32
 6 672112201 7020820          116
 7 125612201 3670820          114
 8 561352201 7615820           22
 9 721652201 8755820           94
10 320562201 7566820          103
   

我嘗試了以下方法(但我不是您可能看到的專家):

if (my_data$new_icccmain<20){
  my_data$maindiagnosticgr <- "I"
} else if (my_data$new_icccmain > 20 & my_data$new_icccmain < 30) {
  my_data$maindiagnosticgr <- "II"
} else if (my_data$new_icccmain > 30 & my_data$new_icccmain < 40) {
  my_data$maindiagnosticgr <- "III"
} else if (my_data$new_icccmain > 40 & my_data$new_icccmain < 49) {
  my_data$maindiagnosticgr <- "IV"
} else if (my_data$new_icccmain == 50) {
  my_data$maindiagnosticgr <- "V"
} else if (my_data$new_icccmain > 60 & my_data$new_icccmain < 70) {
  my_data$maindiagnosticgr <- "VI"
} else if (my_data$new_icccmain > 70 & my_data$new_icccmain < 80) {
  my_data$maindiagnosticgr <- "VII"
} else if (my_data$new_icccmain > 80 & my_data$new_icccmain < 90) {
  my_data$maindiagnosticgr <- "VIII"
} else if (my_data$new_icccmain > 90 & my_data$new_icccmain < 100){
  my_data$maindiagnosticgr <- "IX"
} else if (my_data$new_icccmain > 100 & my_data$new_icccmain < 110) {
  my_data$maindiagnosticgr <- "X"
} else if (my_data$new_icccmain > 110 & my_data$new_icccmain < 120) {
  my_data$maindiagnosticgr <- "XI"
} else {
  my_data$maindiagnosticgr <- "XII"
}

我從 R 收到以下警告:條件的長度 > 1,並且只會使用第一個元素。 我不知道該怎么辦!

你能幫幫我嗎? 非常感謝!

來自dplyr package 的case_when() function 在這里很有用:

my_data$maindiagnosticgr <- dplyr::case_when(my_data$new_icccmain < 20 ~ "I",
                                             my_data$new_icccmain < 30 ~ "II",
                                             my_data$new_icccmain < 40 ~ "III",
                                             my_data$new_icccmain < 49 ~ "IV",
                                             my_data$new_icccmain == 50 ~ "V",
                                             my_data$new_icccmain < 70 ~ "VI",
                                             my_data$new_icccmain < 80 ~ "VII",
                                             my_data$new_icccmain < 90 ~ "VIII",
                                             my_data$new_icccmain < 100 ~ "IX",
                                             my_data$new_icccmain < 110 ~ "X",
                                             my_data$new_icccmain < 120 ~ "XI",
                                             TRUE ~ "XII")

暫無
暫無

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

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