R 连接列中行的值

R 连接列中行的值,r,dplyr,R,Dplyr,我有一个看起来像这样的TIBLE,列的名称是: A B C D <char> <char> <char> <char> Aa Bb C D Aa Bb C D A B C D Aa Bb C D Aa Bb C D 我想得到这个: A B C D <char> <char> <char&

我有一个看起来像这样的TIBLE,列的名称是:

  A      B      C      D
<char> <char> <char> <char>
  Aa     Bb     C      D 
  Aa     Bb     C      D
A B C D
Aa Bb C D
Aa Bb C D
我想得到这个:

  A      B      C      D
<char> <char> <char> <char>
 AaAa   BbBb    C      D
A B C D
AaAa BBBBC D

因此,如果所有行中的字符串都完全相同,我只想保留这一个值。如果它们不同,请将它们连接到一个字符串中。

我不确定您为什么想要这种行为,但您可以通过以下代码实现:

x=read.table(header = T, text="
A  B  C D
Aa Bb C D 
Aa Bb C D")
x %>% 
  group_by(C, D) %>% 
  summarise_at(c("A","B"), ~paste(.x, collapse=""))
基本上,按“固定”列分组,然后使用粘贴在A和B处折叠

这是为了获得预期的输出。如果我引用你的文字,它看起来更像这样:

x=read.table(header = T, text="
A  B  C D
Aa Ba C D 
Aa Ba C D 
Aa Bb C D")
x %>% 
  group_by(C, D) %>% 
  summarise_at(c("A","B"), ~{
    if(length(levels(factor(.x)))==1) .x[1] else paste(unique(.x), collapse="")
  })
如果列中只有一个值,则输出该值,否则输出所有唯一值的串联

#一个tible:1 x 4
#组别:C[1]
C D A B
1 C D Aa BaBb

我不知道您为什么想要这种行为,但您可以通过以下代码实现:

x=read.table(header = T, text="
A  B  C D
Aa Bb C D 
Aa Bb C D")
x %>% 
  group_by(C, D) %>% 
  summarise_at(c("A","B"), ~paste(.x, collapse=""))
基本上,按“固定”列分组,然后使用粘贴在A和B处折叠

这是为了获得预期的输出。如果我引用你的文字,它看起来更像这样:

x=read.table(header = T, text="
A  B  C D
Aa Ba C D 
Aa Ba C D 
Aa Bb C D")
x %>% 
  group_by(C, D) %>% 
  summarise_at(c("A","B"), ~{
    if(length(levels(factor(.x)))==1) .x[1] else paste(unique(.x), collapse="")
  })
如果列中只有一个值,则输出该值,否则输出所有唯一值的串联

#一个tible:1 x 4
#组别:C[1]
C D A B
1 C D Aa BaBb

是不是,你在找这个

library(dplyr)

df <- tribble(
    ~A, ~B, ~C, ~D,
    "Aa", "Bb", "C", "D", 
    "Aa", "Bb", "C", "D",
)

df %>% # take the dataframe
    group_by_all() %>% # group it by all columns (i.e. unique combinations)
    slice(1) # and get the first row in each group

  A     B     C     D    
  <chr> <chr> <chr> <chr>
1 Aa    Bb    C     D  
库(dplyr)
df%#获取数据帧
按所有列分组(即唯一组合)
切片(1)#并获得每组的第一行
A、B、C、D
1 Aa Bb C D

可能是您在找这个吗

library(dplyr)

df <- tribble(
    ~A, ~B, ~C, ~D,
    "Aa", "Bb", "C", "D", 
    "Aa", "Bb", "C", "D",
)

df %>% # take the dataframe
    group_by_all() %>% # group it by all columns (i.e. unique combinations)
    slice(1) # and get the first row in each group

  A     B     C     D    
  <chr> <chr> <chr> <chr>
1 Aa    Bb    C     D  
库(dplyr)
df%#获取数据帧
按所有列分组(即唯一组合)
切片(1)#并获得每组的第一行
A、B、C、D
1 Aa Bb C D

第2行和第3行相同()。即使是艰难的第1行也与之不同。我想你可能想修改你想要的输出。我说的第一行是指列的名称——很抱歉误导了你!第2行和第3行相同()。即使是艰难的第1行也与之不同。我想你可能想修改你想要的输出。我说的第一行是指列的名称——很抱歉误导了你!