如果我在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(),但不确定执行任务的最佳方法。
谢谢,
o
最佳答案
如果不使用其他程序包,我将使用循环并将空单元格替换为先前的非空单元格
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