相关疑难解决方法(0)

将列折叠/连接/聚合到每个组中的单个逗号分隔字符串

我想根据两个分组变量聚合数据框中的一列,并用逗号分隔各个值.

这是一些数据:

data <- data.frame(A = c(rep(111, 3), rep(222, 3)), B = rep(1:2, 3), C = c(5:10))
data
#     A B  C
# 1 111 1  5
# 2 111 2  6
# 3 111 1  7
# 4 222 2  8
# 5 222 1  9
# 6 222 2 10    
Run Code Online (Sandbox Code Playgroud)

"A"和"B"是分组变量,"C"是我想要折叠成逗号分隔character字符串的变量.我试过了:

library(plyr)
ddply(data, .(A,B), summarise, test = list(C))

    A B  test
1 111 1  5, 7
2 111 2     6
3 222 1     9
4 222 …
Run Code Online (Sandbox Code Playgroud)

aggregate r r-faq

53
推荐指数
3
解决办法
2万
查看次数

在数据框中按组折叠文本

如何在列中按组聚合数据group并在列中折叠文本text

样本数据:

df <- read.table(header=T, text="
group text
a a1
a a2
a a3
b b1
b b2
c c1
c c2
c c3
")
Run Code Online (Sandbox Code Playgroud)

所需输出(数据框):

group text
a     a1a2a3
b     b1b2
c     c1c2c3
Run Code Online (Sandbox Code Playgroud)

我现在有:

sapply(unique(df$group), function(x) {
  paste0(df[df$group==x,"text"], collapse='')
})
Run Code Online (Sandbox Code Playgroud)

这在某种程度上起作用,因为它返回按组正确折叠的文本,但作为向量:

[1] "a1a2a3" "b1b2"   "c1c2c3"
Run Code Online (Sandbox Code Playgroud)

我需要一个带有group列的数据框.

r

15
推荐指数
2
解决办法
1万
查看次数

通过R中的组连接列

假设我有这个员工名单:

 Dept Date      Name            
----- --------- --------------- 
   30 07-DEC-02 Raphaely        
   30 18-MAY-03 Khoo            
   40 07-JUN-02 Mavris          
   50 01-MAY-03 Kaufling        
   50 14-JUL-03 Ladwig          
   70 07-JUN-02 Baer            
   90 13-JAN-01 De Haan
   90 17-JUN-03 King  
  100 16-AUG-02 Faviet
  100 17-AUG-02 Greenberg 
  110 07-JUN-02 Gietz           
  110 07-JUN-02 Higgins         
Run Code Online (Sandbox Code Playgroud)

我想要一个R部门的列表聚合(类似于Oracle PL/SQL的LISTAGG函数),它将产生最后一列:

 Dept Date      Name            Emp_list
----- --------- --------------- ---------------------------------------------
   30 07-DEC-02 Raphaely        Raphaely; Khoo
   30 18-MAY-03 Khoo            Raphaely; Khoo
   40 07-JUN-02 Mavris          Mavris
   50 01-MAY-03 Kaufling        Kaufling; Ladwig
   50 14-JUL-03 Ladwig …
Run Code Online (Sandbox Code Playgroud)

string oracle text r aggregation

2
推荐指数
1
解决办法
3373
查看次数

如何总结R中的因子或字符变量?

我想“总结” R中的一个因子变量,这样对于每条记录,我都知道存在哪些因子水平。

这是一个简化的示例数据框:

df <- data.frame(record= c("a","a","b","c","c","c"),
species = c("COD", "SCE", "COD", "COD","SCE","QSC"))

record species
     a     COD
     a     SCE
     b     COD
     c     COD
     c     SCE
     c     QSC
Run Code Online (Sandbox Code Playgroud)

这就是我想要实现的目标:

data.frame(record= c(a,b,c), species = c("COD, SCE", "COD", "COD, SCE, QSC"))

    record       species
        a       COD, SCE
        b            COD
        c  COD, SCE, QSC
Run Code Online (Sandbox Code Playgroud)

这是我所能获得的最接近的结果,但它会将所有级别的因素记录在每个记录中,而不仅仅是每个记录应显示的水平。

summarise(group_by(df, record),
          species = (paste(levels(species), collapse="")))
record   species
   <fctr>   <chr>
      a CODQSCSCE      <- this should be CODSCE
      b CODQSCSCE      <- this should just be COD
      c CODQSCSCE      <- this is …
Run Code Online (Sandbox Code Playgroud)

r dataframe tapply dplyr

1
推荐指数
1
解决办法
4190
查看次数

折叠唯一的行但保留R中的变量

我对R比较陌生,不知道如何用短语来表达我的问题.基本上,我有一个test看起来像这样的数据框:

PMID     PL           subject
1        Canada       neurology
2        USA          cancer
5        Canada       dermatology
2        USA          respiratory
4        Japan        neurology
2        USA          cancer
5        Canada       cardiovascular
Run Code Online (Sandbox Code Playgroud)

我要转换成

PMID      PL        subject
1         Canada    neurology
2         USA       cancer, respiratory
5         Canada    dermatology, cardiovascular
4         Japan     neurology
Run Code Online (Sandbox Code Playgroud)

实质上,每个PMID可以与多个主题相关联,因此我希望保留该信息.我只想要唯一的PMID行.我也想删除重复次数(例如,有3行"2"但其中2行是"癌症".另外,我还有其他变量,每个PMID对于其他每个都有相同的值变量(主题除外).

请指教.

谢谢!

variables r unique collapse dataframe

1
推荐指数
1
解决办法
85
查看次数

标签 统计

r ×5

dataframe ×2

aggregate ×1

aggregation ×1

collapse ×1

dplyr ×1

oracle ×1

r-faq ×1

string ×1

tapply ×1

text ×1

unique ×1

variables ×1