#r
Вопрос:
Я хочу разделить все строки на основе значения строки на определенный столбец (col4) для каждой строки.Есть какие-нибудь предложения о том, как это сделать? Спасибо!
# declaring dataframe
data_frame <- data.frame(col1 = c(2,4,6), col2 = c(4,6,8),
col3 = c(9,12,15), col4 = c(1,2,3))
data_frame
col1 col2 col3 col4
2 4 9 1
4 6 12 2
6 8 15 3
Желаемый результат:
col1 col2 col3 col4
2 4 9 1
2 3 6 1
2 2.67 5 1
Комментарии:
1. Все, что тебе нужно, это
data_frame/data_frame[, 4]
.
Ответ №1:
library(dplyr)
# #Data
data_frame <- data.frame(col1 = c(2,4,6), col2 = c(4,6,8), col3 = c(9,12,15), col4 = c(1,2,3))
data_frame %>%
rowwise() %>%
mutate(across(everything(), ~ . / col4))
# A tibble: 3 x 4
# Rowwise:
# col1 col2 col3 col4
# <dbl> <dbl> <dbl> <dbl>
#1 2 4 9 1
#2 2 3 6 1
#3 2 2.67 5 1
Ответ №2:
rowwise
не требуется:
library(tidyverse)
data_frame <- data.frame(col1 = c(2,4,6), col2 = c(4,6,8),
col3 = c(9,12,15), col4 = c(1,2,3))
data_frame %>%
mutate(across(everything(), ~ ./col4))
#> col1 col2 col3 col4
#> 1 2 4.000000 9 1
#> 2 2 3.000000 6 1
#> 3 2 2.666667 5 1
Ответ №3:
В base R
:
data_frame[,1:4] <- sapply(data_frame, function(x) x/data_frame$col4)
data_frame
col1 col2 col3 col4
1 2 4.000000 9 1
2 2 3.000000 6 1
3 2 2.666667 5 1