R:删除数据帧行内的重复项

时间:2019-01-08 21:18:34

标签: r unique

我正在处理R中的一些数据,这些数据基于数据框中的注释生成了类别数据列。

注释分散在每一行的多列中,因此需要对每个注释进行分类。类别列的结果如下所示:

<xsl:template match="list">
  <xsl:for-each-group select="element" group-adjacent="(position() - 1) idiv 5">
    <xsl:result-document href="bic-{position()}.txt" method="text">
      <xsl:value-of select="current-group()" separator=""/>
    </xsl:result-document>
  </xsl:for-each-group>
</xsl:template>

在这些行中,我只需要保留唯一值(删除重复项)。我不想删除整个行或整个列,只需将行中的重复项转换为空白即可。因此,新示例如下所示:

Category1  Category2             Category3             Category4
No change  Presentation Changed  Presentation Changed  No change
No change  No change             Scroll Changed

请让我知道是否有其他有关解决此问题的代码或表的详细信息。谢谢!

1 个答案:

答案 0 :(得分:0)

以下是使用tidyverse软件包的解决方案:

library(tidyverse)

data <-
  tibble(
    Category1 = c('No change', 'No change'),
    Category2 = c('Presentation Changed', 'No change'),
    Category3 = c('Presentation Changed', 'Scroll Changed'),
    Category4 = c('No change', '')
  ) 

data %>%
  mutate(id = row_number()) %>%
  gather(Category, Value, -id) %>%
  group_by(id, Value) %>%
  mutate(cnt = n()) %>%
  group_by(id, Value) %>%
  mutate(dup = row_number()) %>%
  ungroup() %>%
  mutate(Value = if_else(cnt > 1 & dup > 1, '', Value)) %>%
  select(id, Category, Value) %>%
  spread(Category, Value)