小编Joh*_*hiu的帖子

按列分组并将列汇总到列表中

我有这样的数据帧:

sample_df<-data.frame(
   client=c('John', 'John','Mary','Mary'),
   date=c('2016-07-13','2016-07-13','2016-07-13','2016-07-13'),
   cluster=c('A','B','A','A'))

#sample data frame
   client date         cluster
1  John   2016-07-13    A 
2  John   2016-07-13    B 
3  Mary   2016-07-13    A 
4  Mary   2016-07-13    A             
Run Code Online (Sandbox Code Playgroud)

我想将其转换为不同的格式,如下所示:

#ideal data frame
   client date         cluster
1  John   2016-07-13    c('A,'B') 
2  Mary   2016-07-13    A 
Run Code Online (Sandbox Code Playgroud)

对于"群集"列,如果某个客户端在同一日期属于不同的群集,则它将是一个列表.

我认为我可以用dplyr包来做,如下所述

library(dplyr)
ideal_df<-sample %>% 
    group_by(client, date) %>% 
    summarize( #some anonymous function)
Run Code Online (Sandbox Code Playgroud)

但是,我不知道在这种情况下如何编写匿名函数.有没有办法将数据转换为理想格式?

group-by r dplyr

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

pytest 的 ModuleNotFoundError 问题

我想使用 pytest 对另一个名为src. 这是我的目录结构:

src      
  __init__.py
  script1.py
  script2.py
test
  test_fun.py
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试通过命令行在文件夹中运行pytesttest,看到以下错误

from script2 import fun2
E ModuleNotFoundError: No module named 'script2'

在每个脚本中,我有以下内容

脚本2.py

def fun2():
return('result_from_2')
Run Code Online (Sandbox Code Playgroud)

脚本1.py

from script2 import fun2

def fun1():
    return(fun2()+'_plus_something')
Run Code Online (Sandbox Code Playgroud)

test_fun.py :

import sys
sys.path.append('../')
from src.script1 import fun1

def test_fun1():        
    output1 = fun1()

    # check output
    assert output1=='result_from_2_plus_something'
Run Code Online (Sandbox Code Playgroud)

如何使用上面提供的目录运行 pytest?

python unit-testing module pytest

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

用tidyr收集多个列

我有一个购物车数据,看起来像下面的示例数据框:

sample_df<-data.frame(
   clientid=1:10,
   ProductA=c("chair","table","plate","plate","table","chair","table","plate","chair","chair"),
   QuantityA=c(1,2,1,1,1,1,2,3,1,2),
   ProductB=c("table","doll","shoes","","door","","computer","computer","","plate"),
   QuantityB=c(3,1,2,"",2,"",1,1,"",1)
)
#sample data frame
   clientid ProductA QuantityA ProductB QuantityB
1  1        chair    1         table   3
2  2        table    2         doll    1   
3  3        plate    1         shoes   2             
4  4        plate    1             
...
10 10       chair    2         plate   1
Run Code Online (Sandbox Code Playgroud)

我想将其转换为不同的格式,如下所示:

#ideal data frame
   clientid ProductNumber Product Quantity
1  1        A             chair   1
2  1        B             table   3
3  2        A             table   2
4  2        B             doll    1
...
11 6        A             chair   1
... …
Run Code Online (Sandbox Code Playgroud)

r reshape dplyr tidyr

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

标签 统计

dplyr ×2

r ×2

group-by ×1

module ×1

pytest ×1

python ×1

reshape ×1

tidyr ×1

unit-testing ×1