16
Использование dplyr, вы можете сделать что-то вроде этого:dplyr: как ссылаться на столбцы по индексу столбца, а не по имени столбца, используя mutate?
iris %>% head %>% mutate(sum=Sepal.Length + Sepal.Width)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species sum
1 5.1 3.5 1.4 0.2 setosa 8.6
2 4.9 3.0 1.4 0.2 setosa 7.9
3 4.7 3.2 1.3 0.2 setosa 7.9
4 4.6 3.1 1.5 0.2 setosa 7.7
5 5.0 3.6 1.4 0.2 setosa 8.6
6 5.4 3.9 1.7 0.4 setosa 9.3
Но прежде, я ссылаться на столбцы по именам столбцов. Как я могу использовать 1
и 2
, которые являются индексами столбцов для достижения того же результата?
Здесь у меня есть следующее, но я чувствую, что это не так элегантно.
iris %>% head %>% mutate(sum=apply(select(.,1,2),1,sum))
Sepal.Length Sepal.Width Petal.Length Petal.Width Species sum
1 5.1 3.5 1.4 0.2 setosa 8.6
2 4.9 3.0 1.4 0.2 setosa 7.9
3 4.7 3.2 1.3 0.2 setosa 7.9
4 4.6 3.1 1.5 0.2 setosa 7.7
5 5.0 3.6 1.4 0.2 setosa 8.6
6 5.4 3.9 1.7 0.4 setosa 9.3
Примечание это не будет хорошо сочетаются с 'group_by':.' Ирис%>% group_by (видов)%>% мутировать (сумма = [[1] ] +. [[2]]), тогда как 'iris%>% group_by (Species)%>% mutate (sum = Sepal.Length + Sepal.Width)' делает. – MrFlick
@MrFlick - Может, мне что-то не хватает. Зачем группировать материю, когда вы вычисляете поровну? Вероятно, они могли бы сбросить 'ungroup()' там, затем перегруппироваться, если они выполняют другие операции. Я нашел это прежде. –
@RichardScriven Это скорее предупреждение о том, что этот метод действительно обходит большую часть инфраструктуры dplyr, поэтому он может разорвать такие вещи, как группировка, которая в противном случае будет работать. Вы по сути пропускаете параметр 'data =' mutate. Вы правы, что это не имеет особого значения для мутанта 'mutate()', но рассмотрим: 'iris%>% group_by (Species)%>% summary (x = mean (. [[1]] +. [[2]])) 'Это нехороший« общий »метод для указания столбцов по индексу. – MrFlick