楼主: bluesmoonlight
4086 16

[问答] R data.frame 实际问题求助 [推广有奖]

11
yywan0913 在职认证  发表于 2014-5-12 17:13:09
complicated 发表于 2014-5-12 16:45
我想的哈,
最笨的办法写个循环
先把数据排好序
  1. data=data.frame(PID=sample(LETTERS,30,T),admittime=Sys.Date()+1:30)
  2. w=unique(data[,1])
  3. newdata=matrix(,nc=2,nr=length(w))
  4. for(i in 1:length(w)){ newdata[i,1]=as.character(w[i]);newdata[i,2]=paste(sort(data[,2][which(data[,1]%in%w[i])]),collapse=",") }  #collapse  易忽视的参数,用来连接向量  
复制代码
引个例子吧

reshap2应该可以,不过内存会变更大吧
是什么给了你自信

12
yywan0913 在职认证  发表于 2014-5-12 17:15:23
  1.       [,1] [,2]                              
  2. [1,] "D"  "2014-05-13"                     
  3. [2,] "J"  "2014-05-14,2014-05-25,2014-06-10"
  4. [3,] "V"  "2014-05-15,2014-05-30"           
  5. [4,] "T"  "2014-05-16"                     
  6. [5,] "X"  "2014-05-17"                     
  7. [6,] "A"  "2014-05-18,2014-05-21,2014-06-01"
  8. [7,] "M"  "2014-05-19,2014-05-20,2014-05-22"
  9. [8,] "P"  "2014-05-23,2014-05-31,2014-06-05"
  10. [9,] "R"  "2014-05-24"                     
  11. [10,] "U"  "2014-05-26,2014-05-27"           
  12. [11,] "F"  "2014-05-28"                     
  13. [12,] "N"  "2014-05-29"                     
  14. [13,] "S"  "2014-06-02"                     
  15. [14,] "K"  "2014-06-03,2014-06-08,2014-06-11"
  16. [15,] "I"  "2014-06-04"                     
  17. [16,] "Q"  "2014-06-06"                     
  18. [17,] "C"  "2014-06-07"                     
  19. [18,] "O"  "2014-06-09"  
复制代码

大概得到的结果
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
complicated + 12 + 12 + 5 + 5 + 5 赞实践派!

总评分: 经验 + 12  论坛币 + 12  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

是什么给了你自信

13
bluesmoonlight 发表于 2014-5-12 17:49:04
谢谢,我去试试看.

14
bluesmoonlight 发表于 2014-5-14 13:18:41
yywan0913 发表于 2014-5-12 17:13
引个例子吧

reshap2应该可以,不过内存会变更大吧
谢谢 yywan0913, 解决了. 我的电脑跑这个for loop 的速度很好.

15
bluesmoonlight 发表于 2014-5-14 13:20:57
yywan0913 发表于 2014-5-12 17:13
引个例子吧

reshap2应该可以,不过内存会变更大吧
谢谢 yywan0913, 解决了. 我的电脑跑这个for loop 的速度很好.

16
yywan0913 在职认证  发表于 2014-5-14 13:26:02
bluesmoonlight 发表于 2014-5-14 13:18
谢谢 yywan0913, 解决了. 我的电脑跑这个for loop 的速度很好.
厉害,我这电脑不行,昨天跑了一万多行,跑了一晚上来着。弄得都想安装数据库了
是什么给了你自信

17
yywan0913 在职认证  发表于 2014-5-23 16:29:50
complicated 发表于 2014-5-12 16:45
我想的哈,
最笨的办法写个循环
先把数据排好序
  1. data=data.frame(PID=sample(LETTERS,30,T),admittime=Sys.Date()+1:30)
  2. aggregate(data,by=list(data[,1]),FUN=paste,collapse=",")
复制代码
借鉴新帖灵感,应用aggregate函数
是什么给了你自信

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 21:17