我确信在R中这是一个简单的命令,但由于某种原因,我很难找到解决方案.
我正在尝试在R中运行一堆交叉表(使用table()命令),每个选项卡有两列(处理和不处理).我想知道列之间的差异是否对于所有行而言彼此显着不同(行是调查中的一些答案选择).我对整体意义不感兴趣,只是在交叉表比较治疗与不治疗之间.
这种类型的分析在SPSS中很容易(下面链接说明我在说什么),但我似乎无法让它在R中工作.你知道我能做到吗?
编辑:以下是关于我的意思的R的一个例子:
treatmentVar <-c(0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1) # treatment is 1 or 0
question1 <-c(1,2,2,3,1,1,2,2,3,1,1,2,2,3,1,3) #choices available are 1, 2, or 3
Questiontab <- table(question1, treatmentVar)
Questiontab
Run Code Online (Sandbox Code Playgroud)
我有像这样的表^(由treatmentVar上的列百分比),我想看看从治疗0到治疗1的每个问题选择(行)之间是否存在显着差异.所以在上面的例子中,我会想知道4和2(第1行),第3和第3行(第2行)以及第1和第3行(第3行)之间是否存在显着差异.所以在这个例子中,question1的选择对于选择1和3可能是显着不同的(因为差异是2)但是选择2的差异不是因为差异是零.最终,我试图确定这种重要性.我希望有所帮助.
谢谢!
我试图从这个查询得到结果
$sql = "
SET @col = NULL;
SET @sql = NULL;
Select
Group_Concat(Distinct
Concat(
'SUM(CASE WHEN tbl.sdate = ''',
colname,
''' THEN tbl.result ELSE NULL END) AS ''',
colname,''''
)
) Into @col
From (
select concat(month(i.invdate),'.',year(i.invdate)) as colname
from invoices as i
where i.invtype = 1 and i.pid = 5
order by i.invdate
) As collst;
SET @sql = CONCAT('SELECT tbl.wrkname,', @col, '
FROM (
Select wl.wgname As wrkname, Concat(Month(i.invdate),''.'',Year(i.invdate)) as sdate, Sum(id.qty * id.price) As result
From …Run Code Online (Sandbox Code Playgroud) library(ggplot2)
data(diamonds)
str(diamonds)
## 'data.frame': 53940 obs. of 10 variables:
## $ carat : num 0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...
## $ cut : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...
## $ color : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...
## $ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 …Run Code Online (Sandbox Code Playgroud) 这一点必须明显,但我找不到一个简单的解决方案.
我有像这样的pandas DataFrame:
actual | predicted
------ + ---------
Apple | Apple
Apple | Apple
Apple | Banana
Banana | Orange
Orange | Apple
Run Code Online (Sandbox Code Playgroud)
我要这个:
| Apple | Banana | Orange
------ + ------- + ------- + -------
Apple | 2 | 1 | 0
Banana | 0 | 0 | 1
Orange | 1 | 0 | 0
Run Code Online (Sandbox Code Playgroud) 我有一个交叉表函数,过去曾多次成功使用过,但现在它在最后转储所有数据,而不是将其转储到输出表中。似乎找不到交叉表。我对其进行了以下研究;
下面是一段函数代码: BEGIN str := '" " text,'; -- A1 单元格中的空白
FOR rec IN SELECT DISTINCT col_name FROM an_in_tbl ORDER BY col_name LOOP str := str || '"' || rec.col_name || '" 文本' ||','; 结束循环;
str:= substring(str, 0, length(str));
EXECUTE 'CREATE EXTENSION IF NOT EXISTS tablefunc;
DROP TABLE IF EXISTS an_out_tbl;
CREATE TABLE an_out_tbl AS
SELECT *
FROM crosstab(''select row_name, col_name, row_value from an_in_tbl order by 1'',
''SELECT DISTINCT col_name …Run Code Online (Sandbox Code Playgroud) 我正在用Python实现一个交叉制表库,作为我新工作的编程练习,我已经实现了有效但不优雅且多余的要求.我想要一个更好的模型,它可以在基本模型之间进行漂亮,干净的数据移动,作为平面文件中的表格数据存储,以及可能会对此提出的所有统计分析结果.
现在,我从表格中每行的一组元组进展到计算感兴趣元组外观频率的直方图,到一个序列化器 - 有点笨拙 - 将输出编译成一组用于显示的表格单元格.但是,我最终不得不经常回到桌子或直方图,因为从来没有足够的信息.
那么,有什么想法吗?
编辑:这是一些数据的例子,以及我希望能够从中构建的数据.注意 "." 表示一些"缺失"数据,只是有条件地计算.
1 . 1
1 0 3
1 0 3
1 2 3
2 . 1
2 0 .
2 2 2
2 2 4
2 2 .
Run Code Online (Sandbox Code Playgroud)
如果我正在查看上面第0列和第2列之间的相关性,那么这就是我所拥有的表格:
. 1 2 3 4
1 0 1 0 3 0
2 2 1 1 0 1
Run Code Online (Sandbox Code Playgroud)
另外,我希望能够计算频率/总频率,频率/小计和c的比率.
我真正的问题与记录哪些大量的反病毒产品同意给定的样本是给定的反病毒家族的成员有关.该数据库有数百万个样本,每个样本都有数十种反病毒产品投票.我想问一个问题,如"对于包含名称'XYZ'的恶意软件,哪个样本得票最多,哪些供应商投票支持?" 得到如下结果:
"BadBadVirus"
V1 V2 V3 V4 V5 V6 V7
Sample 1 - 4 votes 1 0 1 0 0 1 1
Sample 2 - 5 votes 1 0 1 0 1 1 1
Sample 3 - 5 votes 1 0 1 0 1 1 1
total 14 3 3 2 3 3
Run Code Online (Sandbox Code Playgroud)
可能会用来告诉我供应商2和供应商4或者不知道如何检测这种恶意软件,或者他们将其命名为不同的东西.
我会尝试略微概括我的问题,同时希望不会破坏你帮助我的能力.假设我有五个选民(Alex,Bob,Carol,Dave,Ed)被要求查看五张照片(P1,P2,P3,P4,P5)并决定照片的"主要主题"是什么.对于我们的例子,我们只假设它们仅限于"猫","狗"或"马".不是每个选民都对每件事都投票.
数据以这种形式存在于数据库中:
Photo, Voter, Decision
(1, 'Alex', 'Cat')
(1, 'Bob', 'Dog')
(1, 'Carol', 'Cat')
(1, 'Dave', 'Cat')
(1, 'Ed', 'Cat')
(2, 'Alex', 'Cat')
(2, 'Bob', 'Dog') …Run Code Online (Sandbox Code Playgroud) 我有一个视图,产生以下结果集:
CREATE TABLE foo
AS
SELECT client_id, asset_type, current_value, future_value
FROM ( VALUES
( 1, 0, 10 , 20 ),
( 1, 1, 5 , 10 ),
( 1, 2, 7 , 15 ),
( 2, 1, 0 , 2 ),
( 2, 2, 150, 300 )
) AS t(client_id, asset_type, current_value, future_value);
Run Code Online (Sandbox Code Playgroud)
我需要将其转换为:
client_id a0_cur_val a0_fut_val a1_cur_val a1_fut_val ...
1 10 20 5 10
2 NULL NULL 0 2
Run Code Online (Sandbox Code Playgroud)
如果我只使用current_value列,使用交叉表,我知道如何做到这一点.如何在目标结果集中使用current_value和future_value生成新列?如果我只是future_value在crosstab(text) …
我想将 PostgreSQL 中的行转换为列。我希望所有变量都针对其各自的 id。但它不起作用。
预期输出:
myvar desc fname lname sdate edate id
title1 desc1 cina jhon 1483920000000 1484524800000 14
title2 desc2 jhon lname2 1483920000000 1483910000000 16
title3 desc3 diesel zier 1483920000000 1484524800000 17
SELECT * FROM crosstab(
'SELECT name, value, id FROM test ORDER BY id') AS (
"myVar" text, "desc" text, "fname" text, "lname" text,"sdate" text,"edate" text, "value" text ,"containerid" bigint);
Run Code Online (Sandbox Code Playgroud)
错误:错误:返回类型无效 SQL 状态:42601 详细信息:SQL rowid 数据类型与返回 rowid 数据类型不匹配。
crosstab ×10
postgresql ×4
pivot ×2
python ×2
r ×2
sql ×2
aggregate ×1
algorithm ×1
group-by ×1
hmisc ×1
mysql ×1
pandas ×1
phalcon ×1
php ×1
pivot-table ×1
significance ×1
statistics ×1