new_data2 <- merge(new_data2,new_data2 %>% transmute(Percent.Non.Electric.Vehicl = Non.Electric.Vehicle.Total/Total.Vehicles),by = c("Region", "State")) Error in fix.by(by.x, x) : 'by'必需指定唯一有效的列
时间: 2024-04-21 09:29:59 浏览: 150
这个错误可能是由于在by参数中指定的列名称不唯一或者在数据框中不存在这些列导致的。请检查一下数据框中是否存在名为"Region"和"State"的列,如果存在,确保这两列的值组合起来是唯一的。如果存在重复值,可以考虑使用其他列作为合并的依据,或者通过去除重复值来解决问题。另外,也可以尝试将by参数的值改为一个长度为2的向量,例如by = c("Region", "State")。
相关问题
> new_data2 <- transform(new_data2, Percent.Non.Electric.Vehicl = (Non.Electric.Vehicle.Total/Total.Vehicles)) > ncol(new_data2) [1] 9 > new_data2 <- cbind(new_data2[1:9], Percent.Non.Electric.Vehicl = Percent.Non.Electric.Vehicl, new_data2[10:ncol(new_data2)]) Error: object 'Percent.Non.Electric.Vehicl' not found
这个错误提示是因为在 `cbind()` 函数中的 `Percent.Non.Electric.Vehicl` 变量未被定义。在 `transform()` 函数中定义的变量默认只存在于该函数中,并不会被保留下来。
你需要把 `transform()` 函数中创建的新变量与原始数据合并,然后再使用 `cbind()` 函数将它们组合起来。可以使用 `merge()` 函数或者 `dplyr` 包中的 `mutate()` 函数来实现。
示例代码:
```R
library(dplyr)
new_data2 <- merge(new_data2,
new_data2 %>%
transmute(Percent.Non.Electric.Vehicl = Non.Electric.Vehicle.Total/Total.Vehicles),
by = c("Region", "State"))
# 或者使用 mutate() 函数
new_data2 <- new_data2 %>%
mutate(Percent.Non.Electric.Vehicl = Non.Electric.Vehicle.Total/Total.Vehicles)
# 最后使用 cbind() 函数组合
new_data2 <- cbind(new_data2[, 1:9],
new_data2[, ncol(new_data2)],
new_data2[, 10:(ncol(new_data2)-1)])
```
阅读全文