首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除每列中的两个重复中的一个并将它们合并到r中

如何删除每列中的两个重复中的一个并将它们合并到r中
EN

Stack Overflow用户
提问于 2021-08-16 10:45:07
回答 4查看 43关注 0票数 0

我有一个数据,它由两列和这些列上的一些重复项组成。我想删除每一列的重复项,然后收集所有唯一的值,保留列名。

代码语言:javascript
复制
 data<-structure(c(10L, 10L, 11L, 11L, 5L, 5L, 3L, 5L), .Dim = c(2L, 
4L), .Dimnames = list(c("d1", "m1"), c("year2036", "year2037", 
"year2038", "year2039")))

   year2036 year2037 year2038 year2039
d1       10       11        5        3
m1       10       11        5        5

输出将如下所示:

代码语言:javascript
复制
year2036 year2037 year2038 year2039 year2039 
      10       11        5        3        5 

out<-structure(c(10, 11, 5, 3, 5), .Names = c("year2036", "year2037", 
"year2038", "year2039", "year2039"))

我尝试过unique(r[c(1:8)]),但它只是给出了唯一的数字,删除了列名。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-08-16 11:38:00

您可以在apply中使用unique并对结果执行stack

代码语言:javascript
复制
stack(apply(data, 2, unique))
#  values      ind
#1     10 year2036
#2     11 year2037
#3      5 year2038
#4      3 year2039
#5      5 year2039

或者使用您想要的格式:

代码语言:javascript
复制
x <- stack(apply(data, 2, unique))
setNames(x$values, x$ind)
#year2036 year2037 year2038 year2039 year2039 
#      10       11        5        3        5 
票数 2
EN

Stack Overflow用户

发布于 2021-08-16 11:33:41

代码语言:javascript
复制
data %>%
    as_tibble() %>%
    pivot_longer(everything()) %>%
    group_by(name) %>%
    distinct(value)

 # A tibble: 5 x 2
 # Groups:   name [4]
   name     value
   <chr>    <int>
 1 year2036    10
 2 year2037    11
 3 year2038     5
 4 year2039     3
 5 year2039     5
票数 1
EN

Stack Overflow用户

发布于 2021-08-16 11:39:36

让数据具有相同的列名并不是一种好的做法。这是一个解决方案,它提供了与预期输出相同的结构,但修改了列名。

代码语言:javascript
复制
library(dplyr)
library(tidyr)

data %>%
  as.data.frame() %>%
  pivot_longer(cols = everything()) %>%
  distinct() %>%
  mutate(row = data.table::rowid(name)) %>%
  pivot_wider(names_from = c(name, row), values_from = value)

#  year2036_1 year2037_1 year2038_1 year2039_1 year2039_2
#       <int>      <int>      <int>      <int>      <int>
#1         10         11          5          3          5 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68801482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档