Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.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_Format_Output - Fatal编程技术网

在R中格式化输出

在R中格式化输出,r,format,output,R,Format,Output,我有一组显示就诊ID和受试者姓名的数据 visit<-c(1,2,3,1,2,1,1,2,3,1,2,3) subject<-c("A","A","A","B","B","C","D","D","D","E","E","E") data<-data.frame(visit=visit,subject=subject) 我得到这个输出: A B C D E 3 2 1 3 3 我想知道是否有任何方法可以更改输出,使其成为: A 3 B 2 C 1 D 3 E 3

我有一组显示就诊ID和受试者姓名的数据

visit<-c(1,2,3,1,2,1,1,2,3,1,2,3)
subject<-c("A","A","A","B","B","C","D","D","D","E","E","E")
data<-data.frame(visit=visit,subject=subject)
我得到这个输出:

A B C D E
3 2 1 3 3
我想知道是否有任何方法可以更改输出,使其成为:

A  3
B  2
C  1
D  3
E  3

谢谢

您可以尝试聚合

aggregate(visit~subject, data, max)
#   subject visit
#1       A     3
#2       B     2
#3       C     1
#4       D     3
#5       E     3
或从
tapply

res <- tapply(visit,subject,max)
data.frame(subject=names(res), visit=res)

dplyr
解决方案是:

library(dyplr)  
data %>% group_by(subject) %>% summarize(max = max(visit))
## Source: local data frame [5 x 2]

##   subject max
## 1       A   3
## 2       B   2
## 3       C   1
## 4       D   3
## 5       E   3

它可能会感觉脏,但是使用基本函数
as.matrix
(或者
matrix
)可以满足您的需要

> as.matrix(tapply(visit,subject,max))
  [,1]
A    3
B    2
C    1
D    3
E    3

使用
堆栈
,您可以在base R中轻松地执行此操作:

stack(tapply(visit, subject, max))
#   values ind
# 1      3   A
# 2      2   B
# 3      1   C
# 4      3   D
# 5      3   E
(注意:在这种情况下,“visit”和“subject”的值实际上并不是来自
data.frame
。我想你应该知道!)


(第二个注意事项:您也可以使用
data.frame(如.table(tapply(visit,subject,max))
但这比使用
stack
更具欺骗性,因此以后可能会导致可读性较差的代码。)

> as.matrix(tapply(visit,subject,max))
  [,1]
A    3
B    2
C    1
D    3
E    3
stack(tapply(visit, subject, max))
#   values ind
# 1      3   A
# 2      2   B
# 3      1   C
# 4      3   D
# 5      3   E