我想我只是一个小问题,但我不知道如何解决它。我想计算每行的repo init -u (path-to-xml-file) -m fetch.xml
repo sync
值,并且列的排名取决于类别。
git branch
等级总是1,我猜是因为max
函数调用但不确定。
还有一种方法可以自动使用除df <- data.frame(cat=rep(letters[1:5], each=5),
a=runif(25),
b=runif(25),
c=runif(25))
df %>%
group_by(cat) %>%
rowwise() %>%
mutate(MAX=max(a,b,c),
RANK=rank(MAX))
列以外的所有列吗?
提前谢谢!
答案 0 :(得分:2)
改为使用pmax
:
df %>%
group_by(cat) %>%
mutate(MAX = pmax(a,b,c), RANK = rank(MAX))
#Source: local data frame [25 x 6]
#Groups: cat [5]
#
# cat a b c MAX RANK
# (fctr) (dbl) (dbl) (dbl) (dbl) (dbl)
#1 a 0.8514743 0.4051721 0.5547097 0.8514743 3
#2 a 0.2599851 0.3559089 0.2878979 0.3559089 1
#3 a 0.1269608 0.6784622 0.1088647 0.6784622 2
#4 a 0.6764552 0.9013046 0.8811285 0.9013046 4
#5 a 0.9284667 0.3482491 0.9241917 0.9284667 5
#6 b 0.7799539 0.8811926 0.6788580 0.8811926 3
#7 b 0.8974519 0.8499074 0.1847301 0.8974519 4
#8 b 0.6819014 0.9334878 0.6150482 0.9334878 5
#9 b 0.2539325 0.1707934 0.2902184 0.2902184 1
#10 b 0.7913689 0.5555206 0.3349121 0.7913689 2
#.. ... ... ... ... ... ...
pmax
和pmin
返回输入值的 p 并行最大值和最小值。这意味着,您不需要按行分组(使用rowwise
)。
小例子:
pmax(1:5, 5:1)
#[1] 5 4 3 4 5
如果您需要更多灵活性,可以分两步完成:
df %>%
rowwise() %>%
mutate(MAX = max(a,b,c)) %>%
group_by(cat) %>%
mutate(RANK = rank(MAX))
但是对于上述示例,pmax
显然是一种更好的方法。
另一种选择是使用rowMeans
:
df %>%
mutate(MAX = rowMeans(.[c('a','b','c')])) %>%
group_by(cat) %>%
mutate(RANK = rank(MAX))
如果您不想手动指定列名,可以使用do.call
并排除第一列:
df %>% mutate(MAX = do.call(pmax, .[-1]))