【问题标题】:Using R, how to pivot/transform a dataset whose elements are the result of a function使用 R,如何透视/转换其元素是函数结果的数据集
【发布时间】:2014-09-12 07:03:18
【问题描述】:

我有以下玩具数据集:

z <- c(2,2,3,3,3,4,2,2)
y <- c(6,6,6,5,4,6,6,5)
x <- c(1,1,2,3,5,4,4,3)
df <- cbind(x,y,z)

我想知道元素 z 与每个元素 y 的元素 x 一起出现了多少次。生成的数据集应如下所示:

     y(4) y(5) y(6)
x(1)  0    0    2
x(2)  0    0    1 
x(3)  0    2    0
x(4)  0    0    2
x(5)  1    0    0

解决方案需要可扩展,以使 x、y 和 z 中的元素数量无关紧要。

【问题讨论】:

  • z 在您想要的输出中扮演什么角色?
  • 对 (Xn, Yn) 中存在 z 的每个实例进行计数并在表中求和
  • 即使删除z 列也会得到相同的结果,所以我不知道你的意思

标签: r pivot


【解决方案1】:

您想要的结果只是xy 中的table

> table(df[,"x"], df[,"y"])
#   
#    4 5 6
#  1 0 0 2
#  2 0 0 1
#  3 0 2 0
#  4 0 0 2
#  5 1 0 0

也许将df 转换为data.frame 可能更有意义

> df <- data.frame(df)
> with(df, table(x, y))
#    y
# x   4 5 6
#   1 0 0 2
#   2 0 0 1
#   3 0 2 0
#   4 0 0 2
#   5 1 0 0

【讨论】:

  • as.data.frame.matrix(with(df, table(x,y))) 正是我想要的。谢谢!
猜你喜欢
  • 2018-01-24
  • 2013-04-07
  • 2015-02-25
  • 1970-01-01
  • 1970-01-01
  • 2021-08-06
  • 2020-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多