我在尝试对数据框进行子集化时遇到问题。这是我用来导入数据文件和子设置的代码;
fiber_val<-read.csv(file.choose(), header=TRUE, dec=",", check.names=FALSE,stringsAsFactors=FALSE)
y<-14
z<-16
fiber_val[, y:z] <- sapply(fiber_val[, y:z], as.numeric)
fiber_val$sg<-(fiber_val$airdryweight/1.077)/fiber_val$waterweight
fiber_val<-subset(fiber_val, select = c(id,sample,standtreedisk,density,sg))
Run Code Online (Sandbox Code Playgroud)
运行最后一行后,它对我大喊大叫
Error in x[j] : invalid subscript type 'list'
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的数据集的一部分;
id stand tree disk species region standtreedisk nirblock sample barktopith pithtobark length sections ringssection airdryweight waterweight density
1 160 7 10 131 6 160x7x10 749 16907 4 2 52 5 2 0.6489 1.3245 0.48992
2 160 7 10 131 6 160x7x10 749 16905 2 4 52 5 3 0.6062 1.2206 0.49664
3 …Run Code Online (Sandbox Code Playgroud) 我有一个名为的数据框df,看起来像这样;
id face value
1 r 15
1 r 11
1 t 16
1 t 17
2 r 13
2 r 25
2 t 12
2 t 18
3 r 30
3 r 20
3 t 19
3 t 10
Run Code Online (Sandbox Code Playgroud)
因此,如果满足两个条件,我需要平均每一行.条件是; 如果id和face是相同的,那么平均value.
例如,if id=1,face=r然后是平均值15+11并将计算值13放在新列中.我必须为整个数据帧(2000行,500行不同id)执行此操作.
PS; 对于每一个face我必须有不同的列.我的意思是,例如,如果id=1并face=r把平均value在一个名为新列newr,如果id=2和face=r投入平均value在一个名为新列newr …