加列我有数据表R-如何在r中
Name Score
A 5
A 6
B 9
B 1
B 0
...
我想计算和列“FScore” =最高分在这个表格
我预期的结果
Name Score Fscore
A 5 6
A 6 6
B 9 9
B 1 9
B 0 9
谢谢。
加列我有数据表R-如何在r中
Name Score
A 5
A 6
B 9
B 1
B 0
...
我想计算和列“FScore” =最高分在这个表格
我预期的结果
Name Score Fscore
A 5 6
A 6 6
B 9 9
B 1 9
B 0 9
谢谢。
如果您试图找到每个Name值的最高分数,则可以使用data.table,如下所示。
# example data
d <- data.table(Name = c("A", "A", "B", "B", "B"),
Score = c(5, 6, 9, 1, 0))
# find max for each Name and save the value in a new column, Fscore
d[ , Fscore := max(Score), by=Name]
结果:
> print(d)
Name Score Fscore
1: A 5 6
2: A 6 6
3: B 9 9
4: B 1 9
5: B 0 9
使用dplyr
另一种选择可能是:
df = data.frame(Name = c('a', 'a', 'b','b','b'), Score = c(5,6,9,1,0))
df %>% group_by(Name) %>% mutate(Fscore = max(Score))
Source: local data frame [5 x 3]
Groups: Name [2]
Name Score FScore
<fctr> <dbl> <dbl>
1 a 5 6
2 a 6 6
3 b 9 9
4 b 1 9
5 b 0 9
我们可以使用基本R
选项ave
df$Fscore <- ave(df$Score, df$Name, FUN = max)
df
# Name Score Fscore
#1 A 5 6
#2 A 6 6
#3 B 9 9
#4 B 1 9
#5 B 0 9
'AVE(DF $分数,df $名称,FUN = max)' –