Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何聚合具有三个维度的数据?_R_Dplyr_Tidyverse - Fatal编程技术网

R 如何聚合具有三个维度的数据?

R 如何聚合具有三个维度的数据?,r,dplyr,tidyverse,R,Dplyr,Tidyverse,在数据处理之后,我有一个类似这样的数据集: 您可以在此处找到数据集: 如果您无法访问数据,以下是一个示例: dfk <- tribble( ~group, ~date, ~id, ~share, ~status, 'FALSE', 'January 20', '25092', '0,050904271%', 'A', 'NA', 'April 19', '293

在数据处理之后,我有一个类似这样的数据集:

您可以在此处找到数据集:

如果您无法访问数据,以下是一个示例:

dfk <- tribble(
  ~group,           ~date,       ~id,         ~share,       ~status,
'FALSE',        'January 20',   '25092',   '0,050904271%',   'A',     
'NA',           'April 19',     '29374',   '60,584652862%',  'B',     
'TRUE',         'January 20',   '22625',   '87,401561145%',  'B',     
'TRUE',         'January 20',   '315618',  '99,697519661%', 'A',     
'FALSE & TRUE', 'January 20',   '31002',   '100%         ',  'C',     
'TRUE',         'April 19',     '21788',   '99,836975729%',  'A',     
'TRUE',         'January 20',   '1362',    '76,418519990%',  'A',     
'NA',           'January 20',   '29374',   '59,873882219%',  'C',     
'TRUE',         'April 19',     '9961',    '45,869691681%',  'A',     
'FALSE',        'January 20',   '62184',   '33,833598912%',  'A', 
)
dfk1)将共享转换为数字,并从中创建一个表
xt
。然后使用
ftable
显示表格。现在,您可以删除或聚合任何您想要的列,或者保持原样,或者查看下面的(2)。没有使用任何软件包

dfk$share <- as.numeric(chartr(",%", ". ", dfk$share))
xt <- xtabs(share ~., dfk)
ftable(xt, row.vars = "id", col.vars = c("status", "group"))
2)假设
share
已如上转换为数字,另一种选择是data.table:

library(data.table)
dcast(data = dfk, id ~ status + group, value.var = "share", fill = 0)
给予:

       status            A                                                   B                                                   C                                       
       group         FALSE FALSE & TRUE           NA         TRUE        FALSE FALSE & TRUE           NA         TRUE        FALSE FALSE & TRUE           NA         TRUE
id                                                                                                                                                                       
1362            0.00000000   0.00000000   0.00000000  76.41851999   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000
21788           0.00000000   0.00000000   0.00000000  99.83697573   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000
22625           0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000  87.40156115   0.00000000   0.00000000   0.00000000   0.00000000
25092           0.05090427   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000
29374           0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000  60.58465286   0.00000000   0.00000000   0.00000000  59.87388222   0.00000000
31002           0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000 100.00000000   0.00000000   0.00000000
315618          0.00000000   0.00000000   0.00000000  99.69751966   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000
62184          33.83359891   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000
9961            0.00000000   0.00000000   0.00000000  45.86969168   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000
      id     A_FALSE   A_TRUE     B_NA   B_TRUE C_FALSE & TRUE     C_NA
1   1362  0.00000000 76.41852  0.00000  0.00000              0  0.00000
2  21788  0.00000000 99.83698  0.00000  0.00000              0  0.00000
3  22625  0.00000000  0.00000  0.00000 87.40156              0  0.00000
4  25092  0.05090427  0.00000  0.00000  0.00000              0  0.00000
5  29374  0.00000000  0.00000 60.58465  0.00000              0 59.87388
6  31002  0.00000000  0.00000  0.00000  0.00000            100  0.00000
7 315618  0.00000000 99.69752  0.00000  0.00000              0  0.00000
8  62184 33.83359891  0.00000  0.00000  0.00000              0  0.00000
9   9961  0.00000000 45.86969  0.00000  0.00000              0  0.00000
1)将共享转换为数字,并从中创建表
xt
。然后使用
ftable
显示表格。现在,您可以删除或聚合任何您想要的列,或者保持原样,或者查看下面的(2)。没有使用任何软件包

dfk$share <- as.numeric(chartr(",%", ". ", dfk$share))
xt <- xtabs(share ~., dfk)
ftable(xt, row.vars = "id", col.vars = c("status", "group"))
2)假设
share
已如上转换为数字,另一种选择是data.table:

library(data.table)
dcast(data = dfk, id ~ status + group, value.var = "share", fill = 0)
给予:

       status            A                                                   B                                                   C                                       
       group         FALSE FALSE & TRUE           NA         TRUE        FALSE FALSE & TRUE           NA         TRUE        FALSE FALSE & TRUE           NA         TRUE
id                                                                                                                                                                       
1362            0.00000000   0.00000000   0.00000000  76.41851999   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000
21788           0.00000000   0.00000000   0.00000000  99.83697573   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000
22625           0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000  87.40156115   0.00000000   0.00000000   0.00000000   0.00000000
25092           0.05090427   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000
29374           0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000  60.58465286   0.00000000   0.00000000   0.00000000  59.87388222   0.00000000
31002           0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000 100.00000000   0.00000000   0.00000000
315618          0.00000000   0.00000000   0.00000000  99.69751966   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000
62184          33.83359891   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000
9961            0.00000000   0.00000000   0.00000000  45.86969168   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000   0.00000000
      id     A_FALSE   A_TRUE     B_NA   B_TRUE C_FALSE & TRUE     C_NA
1   1362  0.00000000 76.41852  0.00000  0.00000              0  0.00000
2  21788  0.00000000 99.83698  0.00000  0.00000              0  0.00000
3  22625  0.00000000  0.00000  0.00000 87.40156              0  0.00000
4  25092  0.05090427  0.00000  0.00000  0.00000              0  0.00000
5  29374  0.00000000  0.00000 60.58465  0.00000              0 59.87388
6  31002  0.00000000  0.00000  0.00000  0.00000            100  0.00000
7 315618  0.00000000 99.69752  0.00000  0.00000              0  0.00000
8  62184 33.83359891  0.00000  0.00000  0.00000              0  0.00000
9   9961  0.00000000 45.86969  0.00000  0.00000              0  0.00000

请不要发布代码/数据/错误的图像:它无法复制或搜索(SEO),它会破坏屏幕阅读器,并且可能不适合某些移动设备。参考:(和)。请直接包含代码或数据(例如,
dput(head(x))
data.frame(…)
),此外,当链接过时时,问题将无法产生。你能提供问题本身的样本数据吗?这将涉及到使用类似于
dput(head(x,10))
的东西,或者以编程方式使用
data.frame(…)
,以及该示例的预期输出。裁判:还有。你说得对,对不起。我刚刚将示例数据添加为TIBLE。但是,由于在R中生成预期的输出非常困难,所以我不得不从Excel中附加图像@r2e在原始数据的同一行上有A和FALSE,但在输出中没有A和FALSE的列。对,很好。我基本上在输出中求和FALSE和TRUE。但这是完全好的,有一个和虚假的专栏@G.Grothendieck请不要发布代码/数据/错误的图像:它无法复制或搜索(SEO),它会破坏屏幕阅读器,并且可能不适合某些移动设备。参考:(和)。请直接包含代码或数据(例如,
dput(head(x))
data.frame(…)
),此外,当链接过时时,问题将无法产生。你能提供问题本身的样本数据吗?这将涉及到使用类似于
dput(head(x,10))
的东西,或者以编程方式使用
data.frame(…)
,以及该示例的预期输出。裁判:还有。你说得对,对不起。我刚刚将示例数据添加为TIBLE。但是,由于在R中生成预期的输出非常困难,所以我不得不从Excel中附加图像@r2e在原始数据的同一行上有A和FALSE,但在输出中没有A和FALSE的列。对,很好。我基本上在输出中求和FALSE和TRUE。但这是完全好的,有一个和虚假的专栏@G.格罗森迪克