我有如下數據集 名稱col1 col2 一個10.3 10.9 b 11 15 c 20 7.2 d 6.2 6.2 e 5.3 5.4 f 4.5 4.0 我想比較我的df的col1和col2,並且我要創建另一列,在其中比較col1和col2的值時,如果col2的值從col1開始增加,那麼我想在那一列中輸入旁邊的增加值,如果它們是減少然後我要寫減少並且如果它們相同則沒有變化 我想要這樣的輸出 名稱col1 col2 col3 10.3 10.9增加 b 11 15增加 c 20 7.2降低 d 6.2 6.2不變 e 5.3 5.4增加 f 4.5 4.0減小
2021-01-31 08:14:00
使用dplyr: df%>% mutate(Col3 = ifelse(col2 == col1, “沒有變化”, ifelse(col2> col1, “增加”,“減少”))) 或使用@akrun建議的case_when: df%>% mutate(Col3 = case_when(col1 == col2〜“ no change”, col2> col1〜“增加”, TRUE〜“減少”)) 結果: 名稱col1 col2 Col3 1增加10.3 10.9 2 b 11.0 15.0增長 3 c 20.0 7.2減少 4 d 6.2 6.2不變 5 e 5.3 5.4增加 6 f 4.5 4.0減少 數據: df <-structure(list(name = c(“ a”,“ b”,“ c”,“ d”,“ e”,“ f”),col1 = c(10.3, 11,20,6.2,5.3,4.5),col2 = c(10.9,15,7.2,6.2,5.4,4)),class =“ data.frame”,row.names = c(NA, -6L)) | 我們可以用col2減去col1,然後使用符號分配值 df $ col3 <-c(“減少”,“無變化”,“增加”)[sign(df $ col1-df $ col2)+ 2] df #名稱col1 col2 col3 #1 10.3 10.9減少 #2 b 11.0 15.0減少 #3 c 20.0 7.2增加 #4 d 6.2 6.2不變 #5 e 5.3 5.4降低 #6 f 4.5 4.0遞增 或者使用dplyr我們可以使用case_when 圖書館(dplyr) df%>% mutate(col3 = case_when(col1 == col2〜“ no change”, col1> col2〜“增加”, TRUE〜“減少”)) | 基數R df $ col3 <-with(df,ifelse(col1> col2,“減少”, ifelse(col1