16280
8941
我有如下數據集
名稱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減小 
使用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