[英]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.