我是水晶报道的新手,所以这对你来说可能是新手.
我创建了一个交叉表,右边是行总计.如何添加额外列以显示行的平均值.我正在使用Crystal报告2008
以下是交叉表的粗略示例 - 如何插入Average列?谢谢
New York Chicago Boston Total Average
Run Code Online (Sandbox Code Playgroud)
销售总额
我通常可以找出我的应用程序所需的任何SQL查询,但我最近被我需要创建的Cross Tab查询所困扰,并且想知道你是否可以提供帮助?
我有3张桌子
Category(catID, catTitle)
Equipment(equipID, make, model, quantity, catID, siteID)
Site(siteID, title)
Run Code Online (Sandbox Code Playgroud)
我想创建一个Cross Tab查询来显示如下所示的结果集
Category Site1 Site2 Site3 Site4 Site5
PC 2 0 10 3 6
Camera 12 4 2 0 8
Printer 3 2 1 1 2
Run Code Online (Sandbox Code Playgroud)
显示的数字表示每个站点中每个类别项目的总数,使用数量字段和设备表.我以前从未做过Cross Tab查询,而且我正在努力让这个工作.
我正试图从一个表格中获取特定格式的调查数据.但是我的所有尝试似乎都是因为DB上的连接太多/太重而无法提交数据库.
我的数据如下:
id, user, question_id, answer_id,
1, 1, 1, 1
3, 1, 3, 15
4, 2, 1, 2
5, 2, 2, 12
6, 2, 3, 20
Run Code Online (Sandbox Code Playgroud)
大约有250,000行,每个用户大约有30行.我希望结果看起来像:
user0, q1, q2, q3
1, 1, NULL, 15
2, 2, 12, 20
Run Code Online (Sandbox Code Playgroud)
这样每个用户在结果中都有一行,每个用户每个答案都有一个单独的列.
我正在使用Postgres,但任何SQL语言的答案都会受到赞赏,因为我可以翻译成Postgres.
编辑:我还需要能够处理不回答问题的用户,即上面的示例q2用户1.
想象一下,我有一辆带有现场数据的桌面车:
CARS
name | data
car 1 | { "doors" => "5", "engine" => "1.1" }
car 2 | { "doors" => "3", "engine" => "1.1", "air_conditioning" => "true" }
car 3 | { "doors" => "5", "engine" => "1.4" }
Run Code Online (Sandbox Code Playgroud)
假设数据键是动态的(可以添加更多),我如何从这些数据创建一个数据透视表,如下所示:
CROSSTAB
name | doors | engine | air_conditioning
car 1 | 5 | 1.1 |
car 2 | 3 | 1.1 | "true"
car 3 | 5 | 1.4 |
Run Code Online (Sandbox Code Playgroud) 我有一个数据框,看起来像这样:
CASENO Var1 Var2 Resp1 Resp2
1 1 0 1 1
2 0 0 0 0
3 1 1 1 1
4 1 1 0 1
5 1 0 1 0
Run Code Online (Sandbox Code Playgroud)
数据集中有400多个变量.这只是一个例子.我需要在R中创建一个简单的频率矩阵(不包括案例编号),但该table功能不起作用.具体来说,我希望将一部分列交叉制表以创建双模频率矩阵.该表应如下所示:
Var1 Var2
Resp1 3 1
Resp2 3 2
Run Code Online (Sandbox Code Playgroud)
在Stata中,命令是:
gen var = 1 if Var1==1
replace var= 2 if Var2==1
gen resp = 1 if Resp1==1
replace resp = 2 if Resp2==1
tab var resp
Run Code Online (Sandbox Code Playgroud) 我充其量是熊猫的初学者,我无法在任何地方找到解决此问题的方法。
假设我有两个变量:variable1、variable2。
它们可以具有以下预定义值:
variable1 = ['1', '4', '9', '15', '20']
variable2 = ['2', '5', '6']
Run Code Online (Sandbox Code Playgroud)
但是,当前数据集只有其中一些值:
df = pd.DataFrame({variable1 : ['1', '9', '20'],
variable2 : ['2', '2', '6']})
Run Code Online (Sandbox Code Playgroud)
交叉变量时:
pd.crosstab(df.variable1, df.variable2)
Run Code Online (Sandbox Code Playgroud)
我得到:
variable2 2 6
variable1
1 1 0
20 0 1
9 1 0
Run Code Online (Sandbox Code Playgroud)
即使当前数据集没有所有可能的分类值,有没有办法将所有可能的分类值同时放在列和行中?目标是在使用更新的数据集运行脚本时获得相同大小的表,该数据集可能具有先前数据集中不存在的值。
我有这个查询
select * from sales
shop | date | hour | row_no | amount
-----------+------------+-----------+--------+-----------
shop_1 | 2012-08-14 | 00:08:00 | P01 | 10
shop_2 | 2012-08-12 | 00:12:00 | O05 | 40
shop_2 | 2012-08-12 | 00:12:00 | A01 | 20
Run Code Online (Sandbox Code Playgroud)
我有 100 万行,我可以做这个查询
select shop, SUM(amount)
from sales
group by shop
shop | amount |
-----------+------------+
shop_1 | 5666 |
shop_2 | 4044 |
shop_3 4044 |
Run Code Online (Sandbox Code Playgroud)
但是我需要在专栏上度过几天,我不知道他们是否可以帮助我做到这一点
shop | 2012-08-1 | 2012-08-2 | 2012-08-3 |
-----------+------------+-----------+--------+-----------
shop_1 …Run Code Online (Sandbox Code Playgroud) 我有一个有两列的表:
+---------+--------+
| keyword | color |
+---------+--------+
| foo | red |
| bar | yellow |
| fobar | red |
| baz | blue |
| bazbaz | green |
+---------+--------+
Run Code Online (Sandbox Code Playgroud)
我需要在PostgreSQL中做一些单热编码和转换表来:
+---------+-----+--------+-------+------+
| keyword | red | yellow | green | blue |
+---------+-----+--------+-------+------+
| foo | 1 | 0 | 0 | 0 |
| bar | 0 | 1 | 0 | 0 |
| fobar | 1 | 0 | 0 | 0 …Run Code Online (Sandbox Code Playgroud) 我正在尝试基于第三列匹配的一列进行交叉表.以示例数据为例:
df = pd.DataFrame({'demographic' : ['A', 'B', 'B', 'A', 'C', 'C'],
'id_match' : ['101', '101', '201', '201', '26', '26'],
'time' : ['10', '10', '16', '16', '1', '1']})
Run Code Online (Sandbox Code Playgroud)
其中id_match匹配我想要找到人口统计列的交叉表的时间总和.输出看起来像这样:
A B C
A 0 52 0
B 52 0 0
C 0 0 2
Run Code Online (Sandbox Code Playgroud)
希望这是有道理的,如果没有评论.谢谢J
我想分析每辆汽车的统计数据,这些统计数据是修理的和新的。数据样本为:
Name IsItNew ControlDate
Car1 True 31/01/2018
Car2 True 28/02/2018
Car1 False 15/03/2018
Car2 True 16/04/2018
Car3 True 30/04/2018
Car2 False 25/05/2018
Car1 False 30/05/2018
Run Code Online (Sandbox Code Playgroud)
因此,我应该groupby按名称命名,如果有Falsein IsItNew列,则应该设置,False以及第一个日期(False发生的时间)。
我尝试groupby了nunique():
df = df.groupby(['Name','IsItNew', 'ControlDate' ])['Name'].nunique()
Run Code Online (Sandbox Code Playgroud)
但是,它返回每个组中唯一项的计数。
我怎样才能只接收分组的唯一项目而无任何计数?
Actual result is:
Name IsItNew ControlDate
Car1 True 31/01/2018 1
False 15/03/2018 1
30/05/2018 1
Car2 True 28/02/2018 1
16/04/2018 1
False 25/05/2018 1
Car3 True 30/04/2018 1
Expected Result is:
Name …Run Code Online (Sandbox Code Playgroud)