Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过R中数据帧列表中一列的最大值(取决于另一列)计算分数_R_List_Csv_Dataframe - Fatal编程技术网

通过R中数据帧列表中一列的最大值(取决于另一列)计算分数

通过R中数据帧列表中一列的最大值(取决于另一列)计算分数,r,list,csv,dataframe,R,List,Csv,Dataframe,我有一个需要格式化的数据帧(以前的csv文件)列表。我在一个公式里做到了这一切。现在我想计算每个数据帧中的值的分数。 每个数据帧如下所示: Country Year [Indicator] Afghanistan 2007 10.000 Andorra 2008 18.000 Andorra 2009 20.000 Anguilla 2007 15.000 Anguilla 2009 1.000 因此,每个国家和每年都有一个指标(有些国家没有每年的数据) 现在我想添加一个新的列,每个列每年都

我有一个需要格式化的数据帧(以前的csv文件)列表。我在一个公式里做到了这一切。现在我想计算每个数据帧中的值的分数。 每个数据帧如下所示:

Country Year [Indicator]
Afghanistan 2007 10.000
Andorra 2008 18.000
Andorra 2009 20.000
Anguilla 2007 15.000
Anguilla 2009 1.000

因此,每个国家和每年都有一个指标(有些国家没有每年的数据)

现在我想添加一个新的列,每个列每年都有一个分数。因此,在2007年,得分最高的国家得到10分,而其他国家得到的分数较低。 我通过以下方式计算: 得分=(某一年该国的价值/本年所有国家的最大价值)*10

我是这样做的:

ImportGER_max <- aggregate(Import ~ Year, data = ImportGER_2, max)
ImportGER_max[which(ImportGER_max$Year == 2007),2]
x <- 2006

while(x < 2016) {x <- x+1;
ImportGER_2$ImportGERRank[ImportGER_2$Year == x] <- ImportGER_max[which(ImportGER_max$Year == x),2]}

ImportGER_2$ImportGERScore <- (ImportGER_2$Import/ImportGER_2$ImportGERRank) * 10
ImportGER\u max这行吗

# Load library
library(dplyr)

# Calculate score
reformat.df <- function(file.name){
  df <- read.csv(file.name, header = T, sep = ";")

  df %>% 
    group_by(.[[2]]) %>% 
    mutate(score = 10 * .[[3]]/max(.[[3]])) %>% 
    ungroup()
}

# Do for all CSV files
mylist <- lapply(as.list(dir(pattern = ".csv")), reformat.df)
#加载库
图书馆(dplyr)
#计分
重新格式化.df%
变异(分数=10*[[3]]/max([3]])%>%
解组()
}
#对所有CSV文件执行以下操作
mylist这有用吗

# Load library
library(dplyr)

# Calculate score
reformat.df <- function(file.name){
  df <- read.csv(file.name, header = T, sep = ";")

  df %>% 
    group_by(.[[2]]) %>% 
    mutate(score = 10 * .[[3]]/max(.[[3]])) %>% 
    ungroup()
}

# Do for all CSV files
mylist <- lapply(as.list(dir(pattern = ".csv")), reformat.df)
#加载库
图书馆(dplyr)
#计分
重新格式化.df%
变异(分数=10*[[3]]/max([3]])%>%
解组()
}
#对所有CSV文件执行以下操作

我的列表我编辑了我的帖子,我使用的是plyr软件包。我编辑了我的帖子,我使用的是plyr软件包。谢谢你的回复。但它似乎不起作用。问题是,指示符列在每个df中的名称并不相同。。而且它似乎不适用于像[3]这样的引用。为什么我需要再次加载csv文件?我已经把它们放在我的清单上了。对不起,我对RDO真的很陌生,它在每个文件中的位置都一样吗?您不需要再次加载它们。我只是一次完成加载和重新格式化。啊,好的。是的,它总是每个df的第三列。我使用列位置编辑了我的答案,假设指标总是在第三列,年份在第二列。非常感谢您的帮助,但它不起作用。这是我收到的错误消息:“mutate_impl(.data,dots)中的错误:求值错误:参数“.1”丢失,没有默认值。“这是什么意思?”?这个变异的论点是如何运作的?最后应该是每个国家每年的分数谢谢你的回复。但它似乎不起作用。问题是,指示符列在每个df中的名称并不相同。。而且它似乎不适用于像[3]这样的引用。为什么我需要再次加载csv文件?我已经把它们放在我的清单上了。对不起,我对RDO真的很陌生,它在每个文件中的位置都一样吗?您不需要再次加载它们。我只是一次完成加载和重新格式化。啊,好的。是的,它总是每个df的第三列。我使用列位置编辑了我的答案,假设指标总是在第三列,年份在第二列。非常感谢您的帮助,但它不起作用。这是我收到的错误消息:“mutate_impl(.data,dots)中的错误:求值错误:参数“.1”丢失,没有默认值。“这是什么意思?”?这个变异的论点是如何运作的?最后,每年应该对每个国家进行评分
# Load library
library(dplyr)

# Calculate score
reformat.df <- function(file.name){
  df <- read.csv(file.name, header = T, sep = ";")

  df %>% 
    group_by(.[[2]]) %>% 
    mutate(score = 10 * .[[3]]/max(.[[3]])) %>% 
    ungroup()
}

# Do for all CSV files
mylist <- lapply(as.list(dir(pattern = ".csv")), reformat.df)