使用';如果';使用dplyr的data.frame中的语句
我有一个这样的数据框使用';如果';使用dplyr的data.frame中的语句,r,if-statement,dataframe,dplyr,R,If Statement,Dataframe,Dplyr,我有一个这样的数据框 Letter Number Type Ratio A 10 Plant 6 A 11 Person 65 B 9 Fungus 32 B 10 Bacteria 344 C 13 Bacteria 2 C 15 Bacteria 3 我使用了df%>%group
Letter Number Type Ratio
A 10 Plant 6
A 11 Person 65
B 9 Fungus 32
B 10 Bacteria 344
C 13 Bacteria 2
C 15 Bacteria 3
我使用了df%>%groupby(字母)
我想写一个if语句,说明
max(number)-min(number) ==1
然后,该字母的最大数字的比率将是NA
。
换句话说,如果这两个数字是连续的,我希望较高数字的比率为NA
,另一个保持不变。
这是我的预期输出:
Letter Number Type Ratio
A 10 Plant 6
A 11 Person N/A
B 9 Fungus 32
B 10 Bacteria N/A
C 13 Bacteria 2
C 15 Bacteria 3
您可以将
ifelse
与mutate
library(dplyr)
df1 %>%
group_by(Letter) %>%
mutate(Ratio= ifelse(max(Number)-min(Number)==1 &
Number==max(Number), NA_integer_, Ratio))
# Letter Number Type Ratio
#1 A 10 Plant 6
#2 A 11 Person NA
#3 B 9 Fungus 32
#4 B 10 Bacteria NA
#5 C 13 Bacteria 2
#6 C 15 Bacteria 3
或使用data.table
library(data.table)#v1.9.5+
indx <- setDT(df1)[, .I[(max(Number)-min(Number))==1 &
Number==max(Number)] , by = Letter]$V1
df1[indx, Ratio:= NA_integer_]
library(data.table)#v1.9.5+
indx