Re: [問題] 調整/新增變數數量
※ 引述《bedroom0204 (khkh)》之銘言:
:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
:
: [軟體熟悉度]:
: 請把以下不需要的部份刪除
: 新手(沒寫過程式,R 是我的第一次)
: [問題敘述]:
: 我希望可以將1~10人的數據合成呈現,
: 每個人都會有sta, dur數據,再計算出r
: 我本來是寫死的,也就是:
: r1=trunc(r*(dur01/org)+sta01)
: r2=trunc(r*(dur02/org)+sta02)
: r3=trunc(r*(dur03/org)+sta03)
: 但如果我要將1~10人(subjects)作為一個變數,
: 能否用for迴圈產生這些句子呢?還是要用其他手法?
: 也就是當subjects=1,r1=trunc(r*(dur01/org)+sta01)
: subjects=5,r1=trunc(r*(dur01/org)+sta01)
: r2=trunc(r*(dur02/org)+sta02)
: r3=trunc(r*(dur03/org)+sta03)
: r4=trunc(r*(dur04/org)+sta04)
: r5=trunc(r*(dur05/org)+sta05)
練習寫一下,很初階的寫法,不知道是不是你要的~
library(data.table)
dt_r<-data.table(dur=1:10,sta=11:20)
r<-1
org<-1
k<-0
rn<-data.table(subject=1:55,n=1:55,rn=1:55)
for(i in 1:10){
for(j in 1:i){
k=k+1
rn$subject[k]=i
rn$n[k]=j
rn$rn[k]=with(dt_r,trunc(r*(dur[j]/org+sta[j])))
}
}
rn
subject n rn
1: 1 1 12
2: 2 1 12
3: 2 2 14
4: 3 1 12
5: 3 2 14
6: 3 3 16
7: 4 1 12
8: 4 2 14
9: 4 3 16
10: 4 4 18
11: 5 1 12
12: 5 2 14
13: 5 3 16
14: 5 4 18
15: 5 5 20
16: 6 1 12
17: 6 2 14
18: 6 3 16
19: 6 4 18
20: 6 5 20
21: 6 6 22
22: 7 1 12
23: 7 2 14
24: 7 3 16
25: 7 4 18
26: 7 5 20
27: 7 6 22
28: 7 7 24
29: 8 1 12
30: 8 2 14
31: 8 3 16
32: 8 4 18
33: 8 5 20
34: 8 6 22
35: 8 7 24
36: 8 8 26
37: 9 1 12
38: 9 2 14
39: 9 3 16
40: 9 4 18
41: 9 5 20
42: 9 6 22
43: 9 7 24
44: 9 8 26
45: 9 9 28
46: 10 1 12
47: 10 2 14
48: 10 3 16
49: 10 4 18
50: 10 5 20
51: 10 6 22
52: 10 7 24
53: 10 8 26
54: 10 9 28
55: 10 10 30
subject n rn
改用matrix寫
dt_r.m<-matrix(1:20,10,2)
r<-1
org<-1
rn1<-rep(1:10,1:10)
tmp = rle(rn1)
rn2<-do.call(c, sapply(tmp$lengths, function(x) 1:x))
rn.m<-matrix(cbind(rn1,rn2),55,2)
rn.m1<-cbind(rn.m,trunc(r*(dt_r.m[rn.m[,2],1]/org+dt_r.m[rn.m[,2],2])))
rn.m1
[,1] [,2] [,3]
[1,] 1 1 12
[2,] 2 1 12
[3,] 2 2 14
[4,] 3 1 12
[5,] 3 2 14
[6,] 3 3 16
[7,] 4 1 12
[8,] 4 2 14
[9,] 4 3 16
[10,] 4 4 18
[11,] 5 1 12
[12,] 5 2 14
[13,] 5 3 16
[14,] 5 4 18
[15,] 5 5 20
[16,] 6 1 12
[17,] 6 2 14
[18,] 6 3 16
[19,] 6 4 18
[20,] 6 5 20
[21,] 6 6 22
[22,] 7 1 12
[23,] 7 2 14
[24,] 7 3 16
[25,] 7 4 18
[26,] 7 5 20
[27,] 7 6 22
[28,] 7 7 24
[29,] 8 1 12
[30,] 8 2 14
[31,] 8 3 16
[32,] 8 4 18
[33,] 8 5 20
[34,] 8 6 22
[35,] 8 7 24
[36,] 8 8 26
[37,] 9 1 12
[38,] 9 2 14
[39,] 9 3 16
[40,] 9 4 18
[41,] 9 5 20
[42,] 9 6 22
[43,] 9 7 24
[44,] 9 8 26
[45,] 9 9 28
[46,] 10 1 12
[47,] 10 2 14
[48,] 10 3 16
[49,] 10 4 18
[50,] 10 5 20
[51,] 10 6 22
[52,] 10 7 24
[53,] 10 8 26
[54,] 10 9 28
[55,] 10 10 30
data.table的set我還是不太會用 orz
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.147.47.152
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1483356867.A.8B2.html
※ 編輯: criky (27.147.47.152), 01/02/2017 19:35:14
→
01/02 20:25, , 1F
01/02 20:25, 1F
→
01/02 20:25, , 2F
01/02 20:25, 2F
→
01/02 21:00, , 3F
01/02 21:00, 3F
→
01/02 21:02, , 4F
01/02 21:02, 4F
→
01/02 21:08, , 5F
01/02 21:08, 5F
※ 編輯: criky (27.147.47.152), 01/04/2017 22:15:12
推
01/06 09:40, , 6F
01/06 09:40, 6F
→
01/06 09:41, , 7F
01/06 09:41, 7F
→
01/06 12:37, , 8F
01/06 12:37, 8F
※ 編輯: criky (27.147.47.152), 01/17/2017 22:41:01
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
0
4
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章