簡體   English   中英

使用R中的分組數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM