【发布时间】:2021-06-03 21:43:09
【问题描述】:
我有以下数据框。
| User | Ident |
|---|---|
| User 1 | 45668 |
| User 2 | 68445 |
| User 3 | 75006 |
| User 4 | 8000 |
User<- c("User1","User2","User3","User4")
Ident <- c(45668,68445,75006,8000)
df<-data.frame("User"=User,"Ident"=Ident)
我现在想要第三列,创建条件如下:
- 如果号码有四位数 => 类别“Cat_Unknown”
- 如果号码有五位数,则根据前两位数将它们归入一个类别。例如
- 45*** == 猫 A
- 68*** == 猫 A
- 75*** == 猫 B
根据评论添加信息:我将 => 更改为 ==。它不是一个范围。每两位数字都可以有一个单独的“Ident_Cat”。
| User | Ident | Ident_Cat |
|---|---|---|
| User 1 | 45668 | Cat A |
| User 2 | 68445 | Cat A |
| User 3 | 75006 | Cat B |
| User 4 | 8000 | Cat_Unknown |
我可以使用:
c <- df %>%
+ filter(substr(df2$Ident, 1,2) == 45)
c$Ident_Cat<-"CatA"
和rbind
但这似乎是一个令人讨厌的解决方法。
任何想法。 谢谢
【问题讨论】:
-
使用 mutate 创建一个使用 floor(ident/1000) 的新列,它将给出 45、65、75、8 作为值。然后用forcats来应用类别?不清楚 10-74 是否是猫 A,>74 猫 B,