【发布时间】:2020-07-15 13:48:47
【问题描述】:
Kia ora 数据科学社区,在尝试修改数据框架因子的内容时,我很难让 ifelse 声明起作用。我正在使用 5 种不同类型的陷阱类型,但其中两种陷阱类型没有被正确总结。以下是陷阱类型和与每种类型相关的观察数量的汇总表:
DOC150 Double (Fiordland) DOC150 Single (ATBT)
107748 20260
DOC150 Single (ATBT) DOC200 Double (Run Through)
456 2324
DOC200 Double (Takaka) DOC200 Double (ZIP)
23748 2472
DOC200 Single (Takaka) DOC200 Single (Takaka)
11258 23668
我需要将 DOC150 Single (ATBT) 陷阱识别为相同并进行总结,DOC200 Single (Takaka) 也是如此。无论出于何种原因,陷阱类型都被总结为单独的类别;我怀疑从更大的数据集中提取信息时,名称的间距有问题。
我尝试使用以下代码重新分类错误的陷阱类型之一,但无济于事:类别仍然存在,但代码将所有陷阱类型从字符因子更改为数字因子和最终计数对于每个类别保持不变。
Records2$TrapName<- as.character(ifelse(grepl("Single (Takaka)", Records2$TrapTypeTe), "DOC200 Single (Takaka)", Records2$TrapTypeTe))
这是生成的汇总表:
1 2 3 4 5 6 7 8
107748 20260 456 2324 23748 2472 11258 23668
我以为我终于明白如何在ifelse 语句中使用grepl,但现在我被卡住了。我知道如何在 SAS 中执行此操作,但 R 让我陷入了困境。任何帮助将不胜感激。起亚派到 ra,道格
【问题讨论】:
-
看看是否有一些空格可以区分它们。试试
Records2$TrapName <- trimws(df$Records2$TrapTypeTe) -
什么是Kia ora 数据科学社区? :)
-
Kia ora = 毛利语你好...我猜您可以弄清楚“数据科学社区”的含义... ;-)
-
这是使用因子使事情变得更容易的时候之一,因为您立即知道您有什么拼写错误/大写问题。如果
TrapeTypeTe是一个因素,那么级别是多少?更改标签很容易,并且会自动解决问题。 -
Ronak Shah,修剪没有帮助;类别仍然以相同的方式总结。
标签: r if-statement character grepl