标签: crosstab

如何在R中为具有分类数据的列子集创建连续表(交叉表)?

我有一个表格,其标题看起来像这样(我简化了它):

id, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10
Run Code Online (Sandbox Code Playgroud)

其中除id之外的每一行都是一个分类变量.我们将类别命名为A,B,C,D,E.

我想为一些列创建一个列联表,如下所示(为简洁起见,我没有在单元格中放置样本号).获得总列/行会很棒,但不是强制性的,我可以稍后自己计算.

      a1  a2  a3  a4 Total
    ----------------------
    A|
    B|
    C|
    D|
    E|
Total|
Run Code Online (Sandbox Code Playgroud)

因此,问题是如何基于R中的多个列创建交叉表?我用table()和xtabs()看过的例子只使用了一列.在我的例子中,列是相邻的,因此一个交叉表将汇总列a1..a4,另一个列为a5..a7,依此类推.我希望有一种优雅的方式来做到这一点.

我是程序员,但是R的新手

先感谢您.

r crosstab

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

PostgreSQL行到列

我正在尝试创建一个动态系统,允许用户从Excel导入数据列表,所以我需要有动态列,例如:

custom_columns_table
id   list_id  data_type       column_name  data              ....
1    1        VARCHAR(255)    email        jhon@example.com  ....
2    1        VARCHAR(255)    name         Jhon              ....

list_table
id
1
Run Code Online (Sandbox Code Playgroud)

我需要这样的结果:

id email             name  ....
1  jhon@example.com  Jhon  ....
Run Code Online (Sandbox Code Playgroud)

我找到了一些使用交叉表的例子,但我不知道它是否适用于这种情况.

有谁知道我该怎么做?

sql postgresql row crosstab

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

SQL中的聚合函数划分不符合预期

我正在尝试在SQL Server 2008 R2中做一些交叉表.那部分没关系,但是,如果我试图获得每个单元格的百分比,我就会遇到问题.

这是一个蒸馏用例:一项调查,人们给出他们喜欢的颜色和他们喜欢的水果.我想知道有多少像给定的水果和给定的颜色:

with survey as (
    select 'banana' fav_fruit, 'yellow' fav_color
     union select 'banana', 'red'
     union select 'apple', 'yellow'
     union select 'grape', 'red'
     union select 'apple', 'blue'
     union select 'orange', 'purple'
     union select 'pomegranate', 'green'
)
select
    s.fav_color, 
    sum(case 
          when s.fav_fruit = 'banana' then 1
          else 0
        end) as banana, 
    sum(case 
           when s.fav_fruit = 'banana' then 1
           else 0
         end) / sum(1)   -- why does division always yield 0? "+", "-", and "*" all behave as expected. …
Run Code Online (Sandbox Code Playgroud)

sql sql-server crosstab aggregate-functions division

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

熊猫交叉表中的加权结果

我想使用第三列来加权熊猫交叉表中的结果。

例如,以下内容:

import pandas as pd
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'bar'],
                   'B': [1, 1, 0, 0, 0],
                   'weight': [2, 3, 4, 5, 6]})
print(pd.crosstab(df.A, df.B))
Run Code Online (Sandbox Code Playgroud)

结果是:

B    0  1
A        
bar  2  1
foo  1  1
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

B     0  1
A        
bar  11  3
foo   4  2
Run Code Online (Sandbox Code Playgroud)

python crosstab scipy pandas statsmodels

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

如何将scales::percent或scales::percent_format()应用于R中的prop.table以将数字格式化为百分比

考虑以下示例:

tab <- table(mtcars$vs, mtcars$cyl, dnn = c("vs", "cylinder"))
prop.table(tab)
#    cylinder
# vs        4       6       8
#   0 0.03125 0.09375 0.43750
#   1 0.31250 0.12500 0.00000

round(prop.table(tab)*100, 1)
#    cylinder
# vs     4    6    8
#   0  3.1  9.4 43.8
#   1 31.2 12.5  0.0
Run Code Online (Sandbox Code Playgroud)

期望的输出:

#    cylinder
# vs      4     6     8
#   0  3.1%  9.4% 43.8%
#   1 31.2% 12.5%  0.0%
Run Code Online (Sandbox Code Playgroud)

scales::percent(round(prop.table(tab))) 不起作用,因为没有适用的方法应用于plyr::round_any()class 的对象table

我知道我缺少一个简单的解决方法。或者也许一个简单的包装器或拉取请求plyr::round_any()可以为每个人解决这个问题?

formatting r crosstab percentage plyr

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

postgresql中的Crosstab()函数会导致错误.(已安装tablefunc模块)

我正在使用postgresql 9.3.9.

CREATE EXTENSION tablefunc;成功了.现在,当我尝试进行简单的交叉表查询时,例如:

select * from crosstab('select col_1, col_2 from table order by 1,2')
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Error in query: ERROR: function crosstab(unknown) does not exist
HINT: No function matches the given name and argument types. You might need to add explicit type casts
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我尝试在文本中添加显式强制转换,但这没有帮助.

sql postgresql crosstab

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

在交叉表查询 postgres 中传递参数

如何crosstabpostgresql. 请参考postgresql中的以下功能

create function sp_nextfollowup_count_byweek(_from timestamp without time zone,_to timestamp without time zone)
returns table(userid integer,username character varying,day1 bigint,day2 bigint,day3 bigint,day4 bigint,day5 bigint,day6 bigint,day7 bigint)as
$BODY$
BEGIN
return query
with cte as(
select * from crosstab($$
select  follow_up_by,next_follow_up_date,count(*) from sales_enquiry_follow_up where next_follow_up_date between _from and _to
group by follow_up_by,next_follow_up_date 
order by follow_up_by,next_follow_up_date$$,$$select date::timestamp without time zone
from generate_series(
  _from,
  _to,
  '1 day'::interval
) date$$)
as(id integer, dd bigint,dd1 bigint,dd2 bigint,dd3 bigint,dd4 bigint,dd5 bigint,dd6 bigint)
)
select …
Run Code Online (Sandbox Code Playgroud)

postgresql crosstab

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

具有多个“行名称”列的 Postgresql 交叉表查询

我有一张“瘦高”事实表:

CREATE TABLE facts(
    eff_date timestamp NOT NULL,
    update_date timestamp NOT NULL,
    symbol_id int4 NOT NULL,
    data_type_id int4 NOT NULL,
    source_id char(3) NOT NULL,
    fact decimal
 /* Keys */
  CONSTRAINT fact_pk
    PRIMARY KEY (source_id, symbol_id, data_type_id, eff_date),
)
Run Code Online (Sandbox Code Playgroud)

我想“透视”这个报告,所以标题看起来像这样:

eff_date, symbol_id, source_id, datatypeValue1, ... DatatypeValueN
Run Code Online (Sandbox Code Playgroud)

即,对于 eff_date、symbol_id 和 source_id 的每个唯一组合,我想要一行。

但是,postgresql crosstab() 函数只允许键列。

有任何想法吗?

postgresql crosstab postgresql-9.4

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

python psycopg2 - ProgrammingError:函数交叉表(未知,未知)不存在

我想在 Python 中执行一个具有交叉表功能的 SQL 查询,但是我收到以下错误消息:

psycopg2.ProgrammingError:函数交叉表(未知,未知)不存在提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。

有解决方法吗?我已经尝试升级 psycopg2(pip install psycopg2 --upgrade)。非常感谢

python psycopg2 crosstab

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

在 python pandas 中创建交叉表,显示存在哪些值

鉴于以下数据:

pd.DataFrame(dict(
    name = ['a', 'a', 'a', 'b', 'b', 'b'],
    vals = [1, 2 , 3, 99, 3, 4]
))
Run Code Online (Sandbox Code Playgroud)

看起来像:

  name  vals
0    a     1
1    a     2
2    a     3
3    b    99
4    b     3
5    b     4
Run Code Online (Sandbox Code Playgroud)

我想知道如何创建以下内容:

     1     2    3      4     99
a  true  true  true  false  false
b  false false true  false  true
Run Code Online (Sandbox Code Playgroud)

注意 -上面的true和的确切值false并不那么重要,我目前不知道如何创建这种类型的表。

python data-manipulation crosstab pandas

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