这可能是非常基本的(对不起),但我是一个编程初学者,还没有能够在网上找到指令.我使用R,有一个像这样的框架:

id<-c(1:4)
happy<-c(1,0,1,0)
sad<-c(0,0,0,1)
angry<-c(0,1,0,0)
excited<-c(1,0,1,1)
emot<-data.frame(id, happy, sad, angry, excited)
emot
  id happy sad angry excited
  1     1   0     0       1
  2     0   0     1       0
  3     1   0     0       1
  4     0   1     0       1

id表示一个人,而其他变量表示该人是否提到了某种情绪(1)或没有(0).我想转换的框架以获得以下结果:

source target  count
happy  sad      0
happy  angry    0
happy  excited  2
sad    angry    0
sad    excited  1
angry  excited  0

我真的try 了表功能,但没有效果.提前感谢!

推荐答案

在R基地,你可以做这样的事情:

combo <- combn(names(emot)[-1], 2)

as.data.frame(t(combo)) |>
  setNames(c("target", "source")) |>
  transform(count = sapply(asplit(combo, 2), \(x) sum(rowMeans(emot[,x]) == 1L)))

基本上,获取列名的所有组合(不包括id个),然后重新查找这些列并应用一些逻辑.

Output

  target  source count
1  happy     sad     0
2  happy   angry     0
3  happy excited     2
4    sad   angry     0
5    sad excited     1
6  angry excited     0

R相关问答推荐

R中的枢轴/转置

提取R中值和列名的所有可能组合

行式dppr中的变量列名

更改绘图上的x轴断点,而不影响风险?

如何在RMarkdown LaTex PDF输出中包含英语和阿拉伯语?

以更少间隔的较小表中的聚合离散频率表

try 将 colored颜色 编码添加到ggploly的标题中

在GG图中绘制射线的自动程序

Geom_Hline将不会出现,而它以前出现了

如何使这些react 表对象相互独立?

将多个变量组合成宽格式

R中的类别比较

在纵向数据集中创建新行

ggplot R:X,Y,Z使用固定/等距的X,Y坐标绘制六边形热图

无法将条件case_when()应用于使用!!创建的新变量Mutations

如何在shiny 的应用程序 map 视图宣传单中可视化单点

通过匹配另一个表(查找表)中的列值来填充数据表,并在另一个变量上进行内插

识别部分重复行,其中一行为NA,其重复行为非NA

根据向量对列表元素进行排序

当R使用c()组合两个向量时会发生什么?