相关疑难解决方法(0)

我如何获得列联表?

我正在尝试从特定类型的数据创建列联表.这对于循环等是可行的......但是因为我的最终表将包含超过10E5的单元格,所以我正在寻找一个预先存在的函数.

我的初步数据如下:

PLANT                  ANIMAL                          INTERACTIONS
---------------------- ------------------------------- ------------
Tragopogon_pratensis   Propylea_quatuordecimpunctata         1
Anthriscus_sylvestris  Rhagonycha_nigriventris               3
Anthriscus_sylvestris  Sarcophaga_carnaria                   2
Heracleum_sphondylium  Sarcophaga_carnaria                   1
Anthriscus_sylvestris  Sarcophaga_variegata                  4
Anthriscus_sylvestris  Sphaerophoria_interrupta_Gruppe       3
Cerastium_holosteoides Sphaerophoria_interrupta_Gruppe       1
Run Code Online (Sandbox Code Playgroud)

我想创建一个这样的表:

                       Propylea_quatuordecimpunctata Rhagonycha_nigriventris Sarcophaga_carnaria Sarcophaga_variegata Sphaerophoria_interrupta_Gruppe
---------------------- ----------------------------- ----------------------- ------------------- -------------------- -------------------------------
Tragopogon_pratensis   1                             0                       0                   0                    0
Anthriscus_sylvestris  0                             3                       2                   4                    3
Heracleum_sphondylium  0                             0                       1                   0                    0
Cerastium_holosteoides 0                             0                       0                   0                    1
Run Code Online (Sandbox Code Playgroud)

也就是说,行中的所有植物物种,列中的所有动物物种,有时没有相互作用(而我的初始数据仅列出发生的相互作用).

r contingency

23
推荐指数
5
解决办法
6万
查看次数

更快速地计算频率和从长到宽的方式

我试图获得两个变量的水平的每个组合的计数,"周"和"id".我希望结果将"id"作为行,将"week"作为列,将计数作为值.

到目前为止我尝试过的例子(尝试过其他一些东西,包括添加一个虚拟变量= 1然后再加fun.aggregate = sum上它):

library(plyr)
ddply(data, .(id), dcast, id ~ week, value_var = "id", 
        fun.aggregate = length, fill = 0, .parallel = TRUE)
Run Code Online (Sandbox Code Playgroud)

但是,我必须做错事,因为这个功能没有完成.有一个更好的方法吗?

输入:

id      week
1       1
1       2
1       3
1       1
2       3
Run Code Online (Sandbox Code Playgroud)

输出:

  1  2  3
1 2  1  1
2 0  0  1
Run Code Online (Sandbox Code Playgroud)

aggregate r plyr reshape2

8
推荐指数
3
解决办法
1828
查看次数

如何使用强制转换或其他函数在R中创建二进制表

我正在尝试创建一个具有二元响应且已使用强制转换的因子列表.

DF2 <- cast(data.frame(DM), id ~ region)
names(DF2)[-1] <- paste("region", names(DF2)[-1], sep = "")
Run Code Online (Sandbox Code Playgroud)

我得到的问题是答案是答案出现的频率,而我正在寻找它是否匹配.

例如,我有:

id region
 1   2
 1   3
 2   2
 3   1
 3   1
Run Code Online (Sandbox Code Playgroud)

我想要的是:

id region1 region2 region3
1   0          1     1
2   0          1     0
3   1          0     0
Run Code Online (Sandbox Code Playgroud)

casting r reshape dataframe

4
推荐指数
2
解决办法
1703
查看次数

标签 统计

r ×3

aggregate ×1

casting ×1

contingency ×1

dataframe ×1

plyr ×1

reshape ×1

reshape2 ×1