如何在R的data.table物件中更改每個分組的第一個值?
要更改data.table物件中每個分組的第一個值,我們可以使用單個方括號來訪問和更改值為所需的值。例如,如果我們有一個名為DT的data.table物件,其中包含由Class定義的分組列和由Response定義的數值列,那麼可以使用命令DT[,Response:=c(2,Response[-]),by=Class]將每個Class的Response的第一個值設定為5。
考慮以下data.table物件:
示例
library(data.table)
Group<-sample(c("A","B","C"),20,replace=TRUE)
DT1<-data.table(Group,y)
DT1輸出
Group y 1: B 5 2: A 7 3: A 4 4: B 3 5: B 5 6: C 7 7: C 5 8: A 4 9: C 6 10: A 5 11: B 6 12: C 5 13: A 9 14: A 4 15: B 5 16: C 3 17: C 3 18: B 8 19: A 7 20: C 2
將DT1中每個Group的y的第一個值更改為2:
示例
DT1[,y:=c(2,y[-1]),by=Group] DT1
輸出
Group y 1: B 2 2: A 2 3: A 4 4: B 3 5: B 5 6: C 2 7: C 5 8: A 4 9: C 6 10: A 5 11: B 6 12: C 5 13: A 9 14: A 4 15: B 5 16: C 3 17: C 3 18: B 8 19: A 7 20: C 2
示例
Class<-sample(c("First","Second","Third","Fourth"),20,replace=TRUE)
x<-rpois(20,1)
DT2<-data.table(Class,x)
DT2輸出
Class x 1: Fourth 1 2: Second 2 3: Second 0 4: Third 0 5: Second 0 6: First 1 7: Third 2 8: First 1 9: Third 0 10: Fourth 3 11: Fourth 0 12: Second 0 13: Third 2 14: Fourth 3 15: Fourth 0 16: Fourth 3 17: Second 0 18: Fourth 1 19: First 0 20: Second 2
將DT2中每個Class的x的第一個值更改為3:
示例
DT2[,x:=c(3,x[-1]),by=Class] DT2
輸出
Class x 1: Fourth 3 2: Second 3 3: Second 0 4: Third 3 5: Second 0 6: First 3 7: Third 2 8: First 1 9: Third 0 10: Fourth 3 11: Fourth 0 12: Second 0 13: Third 2 14: Fourth 3 15: Fourth 0 16: Fourth 3 17: Second 0 18: Fourth 1 19: First 0 20: Second 2
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP