Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 - Fatal编程技术网

如何在r中添加组计数列?

如何在r中添加组计数列?,r,R,我有一个数据框,其中每个id都可以重复,每一行都是一个事务,每个事务都列出了成本和大小。我想制作一个数据框,其中行是每个购买者的名称,行名称是成本,值是每个名称产生成本的次数。我可以把它做成一个表,但是我很难将这个表准确地转换成数据帧。我在其他程序中使用过崩溃,但在r中似乎无法正确使用。代码如下: test.base <- data.frame( names=c("A", "B", "C", "C", "B", "C"), size

我有一个数据框,其中每个id都可以重复,每一行都是一个事务,每个事务都列出了成本和大小。我想制作一个数据框,其中行是每个购买者的名称,行名称是成本,值是每个名称产生成本的次数。我可以把它做成一个表,但是我很难将这个表准确地转换成数据帧。我在其他程序中使用过崩溃,但在r中似乎无法正确使用。代码如下:

test.base <- data.frame(
              names=c("A", "B", "C", "C", "B", "C"),
              size =c(1, 2, 3, 4, 5, 6))

test.match<- data.frame(
              names=c("A", "B", "C"),
              cost =c(7, 8, 9))

test.merge<- merge(test.base, test.match)

#How do I make a new vriable in test-match that is the number of times 
#the cost shows up in each variable to be three new columns ("7", "8", "9")?
  table(test.merge$names, test.merge$cost)

根据您的编辑,您可能只是在查找as.data.frame.matrix:

请注意,第一列是行名,而不是实际列

其他选项包括使用unclass和data.frame或as.data.frame。前者将创建语法上有效的名称,必要时在名称前加上X,并将空格转换为点,以此类推:

> data.frame(unclass(table(test.merge$names, test.merge$cost)))
  X7 X8 X9
A  1  0  0
B  0  2  0
C  0  0  3
> as.data.frame(unclass(table(test.merge$names, test.merge$cost)))
  7 8 9
A 1 0 0
B 0 2 0
C 0 0 3

根据您的编辑,您可能只是在查找as.data.frame.matrix:

请注意,第一列是行名,而不是实际列

其他选项包括使用unclass和data.frame或as.data.frame。前者将创建语法上有效的名称,必要时在名称前加上X,并将空格转换为点,以此类推:

> data.frame(unclass(table(test.merge$names, test.merge$cost)))
  X7 X8 X9
A  1  0  0
B  0  2  0
C  0  0  3
> as.data.frame(unclass(table(test.merge$names, test.merge$cost)))
  7 8 9
A 1 0 0
B 0 2 0
C 0 0 3

美好的我在各种各样的as.XXX中摸索,但不知道as.data.frame.matrix+1我也不知道如何将.matrix放在末尾;但愿我4小时前问过这个问题!!谢谢@TylerRinker,原来unclass也能解决这个问题。很好。我在各种各样的as.XXX中摸索,但不知道as.data.frame.matrix+1我也不知道如何将.matrix放在末尾;但愿我4小时前问过这个问题!!谢谢@TylerRinker,原来unclass也能解决这个问题。
> data.frame(unclass(table(test.merge$names, test.merge$cost)))
  X7 X8 X9
A  1  0  0
B  0  2  0
C  0  0  3
> as.data.frame(unclass(table(test.merge$names, test.merge$cost)))
  7 8 9
A 1 0 0
B 0 2 0
C 0 0 3