在R

时间:2016-01-07 00:57:41

标签: r

我需要对代码进行哪些更改,以便在将一列(使用列号引用列而不是列名称)分成另一列后创建新列时不重命名列标题,例如如果我拿下表:

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)

1 个答案:

答案 0 :(得分:0)

typeof(dd[2])
# [1] "list"
typeof(dd[,2])
# [1] "integer"

#try this
dd$Average <- round(dd[,2] / dd[,3], 2)