[英]Working with grouped data in R
如果我在R中有一個數據集,如下所示:
ProjName,ProjLevel,Budget
Proj1,Hardware,$100
,Software,$100
,Total,$200
Proj2,Hardware,$200
,Software,$300
,Other,$400
,Total,$900
...
...
我希望數據看起來像這樣:
ProjName,ProjLevel,Budget
Proj1,Hardware,$100
Proj1,Software,$100
Proj1,Total,$200
Proj2,Hardware,$200
Proj2,Software,$300
Proj2,Other,$400
Proj2,Total,$900
我不確定這是否是最佳方法。 理想情況下,我希望每個項目的“總計”預算金額。 我想也許我可以在列上使用apply()但不確定接近任務的最佳方法。
謝謝,普拉
如果不使用其他軟件包,我會使用循環並將空單元格替換為前一個非空單元格
my.table <-read.table(text="ProjName,ProjLevel,Budget
Proj1,Hardware,$100
,Software,$100
,Total,$200
Proj2,Hardware,$200
,Software,$300
,Other,$400
,Total,$900", header=TRUE, as.is=TRUE,sep = ",")
for (i in 1:nrow(my.table)){
if(my.table[i,1]=="") my.table[i,1] <-my.table[i-1,1]
}
得到:
> my.table
ProjName ProjLevel Budget
1 Proj1 Hardware $100
2 Proj1 Software $100
3 Proj1 Total $200
4 Proj2 Hardware $200
5 Proj2 Software $300
6 Proj2 Other $400
7 Proj2 Total $900
要按項目獲得總金額:
my.table[my.table$ProjLevel=="Total",]
ProjName ProjLevel Budget
3 Proj1 Total $200
7 Proj2 Total $900
如果您使用na.strings = ""
讀入數據,則可以使用zoo包中的na.locf
函數使用最新的非缺失值填充缺失值:
my.table <-read.table(text="ProjName,ProjLevel,Budget
+ Proj1,Hardware,$100
+ ,Software,$100
+ ,Total,$200
+ Proj2,Hardware,$200
+ ,Software,$300
+ ,Other,$400
+ ,Total,$900", header=TRUE, as.is=TRUE,sep = ",",na.strings = "")
my.table$ProjName <- na.locf(my.table$ProjName)
> my.table
ProjName ProjLevel Budget
1 Proj1 Hardware $100
2 Proj1 Software $100
3 Proj1 Total $200
4 Proj2 Hardware $200
5 Proj2 Software $300
6 Proj2 Other $400
7 Proj2 Total $900
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.