Преобразование высоты в R - PullRequest
0 голосов
/ 14 февраля 2019

Я недавно начал изучать R и столкнулся с проблемой.В моих данных есть столбец, в котором указана высота игроков в формате (футы).Я хочу создать новый столбец для высоты в сантиметрах.Для этого я использовал функцию «strsplit», как показано ниже (df - столбец высоты):

l <- strsplit(df,"'",fixed = T)
print(l)
[[1]]

[1] "5" "7"

[[2]]

[1] "6" "2"

[[3]]

[1] "5" "9"

[[4]]

[1] "6" "4"

[[5]]

[1] "5"  "11"

[[6]]

[1] "5" "8"

Я застреваю здесь, так как не знаю, как получить требуемое значение после разбиенияполе.

Я пытаюсь использовать приведенный ниже код, но он выдает следующую ошибку:

p_pos <- grep("'",df)
l[[p_pos]][1]

Error in l[[p_pos]] : recursive indexing failed at level 2

Я ожидаю, что приведенный выше код будет напечатанзначения из первого столбца в списке

5 6 5 6 5 5

>dput(head(df, 10))
c("5'7", "6'2", "5'9", "6'4", "5'11", "5'8")

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Один из способов сделать это - создать фрейм данных со столбцом футов и столбцом дюймов.Функция separate в пакете tidyr хорошо справляется с этим - см. этот ответ его создателя .

> library(dplyr)
> library(tidyr)
> df = data.frame(height = c("5'7", "6'2", "5'9", "6'4", "5'11", "5'8"))
> df %>% separate(height, c('feet', 'inches'), "'", convert = TRUE) %>% 
+     mutate(cm = (12*feet + inches)*2.54)
  feet inches     cm
1    5      7 170.18
2    6      2 187.96
3    5      9 175.26
4    6      4 193.04
5    5     11 180.34
6    5      8 172.72

. separate создает фрейм данных со столбцами футов идюймов;mutate выполняет преобразование в сантиметры.

0 голосов
/ 14 февраля 2019

Это даст вам вектор с высотой в сантиметрах.

Мы применяем ко всему вашему списку функцию, которая преобразует числовую строку в числовую и умножает ее с преобразованием в см.

l = list()
l[[1]] = c("5","7")
l[[2]] = c("6","2")
l[[3]] = c("5","9")
l[[4]] = c("6","4")
l[[5]] = c("5","11")
l[[6]] = c("5","8")

sapply(l,function(x) sum(as.numeric(x)*c(30.48,2.54)))
[1] 170.18 187.96 175.26 193.04 180.34 172.72
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...