Сдвиг строк в R - PullRequest
       3

Сдвиг строк в R

0 голосов
/ 25 сентября 2019

У меня есть таблица данных следующим образом:

x     y     z
1 head  car   toe
2 hand  nose  mouse
3 key   house ball

Теперь я хочу переместить голову, руку и мяч в новый столбец и удалить слово в существующих столбцах:

  x    y     z       new
1     car    toe     head
2     nose   mouse   hand
3 key house          ball

Не могли бы вы помочь мне, пожалуйста?Большое спасибо.

Reproducible Data:
df <- data.frame(
  V1   = 1:3, 
  x = c("head", "car", "toe"), 
  y = c("hand", "nose", "mouse"), 
  z = c("key", "house", "ball")
)

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Данные

library (dplyr)
df <- data.frame(
        x = c("head", "hand", "key"),
        y = c("car", "nose", "house"),
        z = c("toe", "mouse", "ball"),
        stringsAsFactors = FALSE
    )

Код

# Add new column.
df_result <- df %>%
    mutate(
        new = case_when(
            x %in% c("head", "hand") ~ x,
            z == "ball" ~ z,
            TRUE ~ NA_character_
        )
    )
# Remove old values.
df_result$x[df_result$x %in% c("head", "hand")] <- NA_character_
df_result$z[df_result$z == "ball"] <- NA_character_

Результат

> df_result
     x     y     z  new
1 <NA>   car   toe head
2 <NA>  nose mouse hand
3  key house  <NA> ball

Предостережение : этот подход отдает приоритет "руке" или "голова "в х перед" шаром "в з.

0 голосов
/ 25 сентября 2019

Используйте dplyr для такого типа (пусть X будет фрейм данных) для переименования или переупорядочения / выбора столбцов.

library(dplyr)
X %>% rename(new=head)

или (для создания нового заказа или выборастолбцы)

X %>% select(x,y,z,`1`,car,toe)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...