我需要对代码进行哪些更改,以便在将一列(使用列号引用列而不是列名称)分成另一列后创建新列时不重命名列标题,例如如果我拿下表:
Variable Value Total
Chicken 5 9
Fish 3 5
Beef 2 3
Chicken 4 9
Beef 1 3
Fish 2 5
将值除以总计以获得百分比(再次使用列号,而不是名称),它将“.Value”添加到“百分比”列标题的末尾(例如, ):
Variable Value Total Average.Value
Chicken 5 9 0.56
Fish 3 5 0.60
Beef 2 3 0.67
Chicken 4 9 0.44
Beef 1 3 0.33
Fish 2 5 0.40
我可以更改我的代码以防止自动后缀,只是保持我的列标题“平均”而不是“Average.Value”?更复杂的是,如果我尝试简单地用以下内容重命名标题:
names(dd)[4] <- "Average"
它不起作用!我不想使用列名的原因是我的实际情况比这里的示例复杂得多,我在一个列范围内循环遍历多个列。
以下是示例代码:
dd <- read.table(header=TRUE,text="
Variable Value
Chicken 5
Fish 3
Beef 2
Chicken 4
Beef 1
Fish 2")
dd$Total <- with(dd,ave(Value,Variable,FUN=sum))
dd$Average <- round(dd[2] / dd[3], 2)
答案 0 :(得分:0)
typeof(dd[2])
# [1] "list"
typeof(dd[,2])
# [1] "integer"
#try this
dd$Average <- round(dd[,2] / dd[,3], 2)