簡體   English   中英

使用條件 dplyr 對列進行變異

[英]Mutate a column with condition dplyr

我是 R 的新手,我想知道如何使用條件值創建一個新列:(對不起,如果我的英語不好)。

我有一個 dataframe 有 3 列:人的 ID、問題和答案。 我想根據人們給出的答案添加一列“測試”。

例如:如果一個人對“你來自哪里”的問題回答“巴黎”,而對“你喜歡巧克力”問題回答“否”,則分配給“TEST”列的值應該是“A”。 但如果他回答“是”和“巴黎”,則應該是“B”。 你可以在這張圖片中看到一個完整的例子:

在此處輸入圖像描述

有人可以幫我解決這個問題嗎...我已經嘗試找到解決方案 3 周了。

嘗試這個:

library(tidyverse)
df %>%
  pivot_wider(
    names_from = Question, 
    values_from = Answer) %>%
  mutate(Test = ifelse(`Where are you from?` == "Paris" & `Do you like chocolate?` == "No",
                       "A",
                       ifelse(`Where are you from?` == "Paris" & `Do you like chocolate?` == "Yes",
                              "B",
                              "C")))
# A tibble: 3 × 4
     ID `Where are you from?` `Do you like chocolate?` Test 
  <dbl> <chr>                 <chr>                    <chr>
1   111 Paris                 Yes                      B    
2   222 Paris                 No                       A    
3   333 DC                    Yes                      C  

如果您想擁有原始格式的 dataframe,請添加pivot_longer

df %>%
  pivot_wider(
    names_from = Question, 
    values_from = Answer) %>%
  mutate(Test = ifelse(`Where are you from?` == "Paris" & `Do you like chocolate?` == "No",
                       "A",
                       ifelse(`Where are you from?` == "Paris" & `Do you like chocolate?` == "Yes",
                              "B",
                              "C"))) %>%
  pivot_longer(2:3,
               names_to = "Question")
# A tibble: 6 × 4
     ID Test  Question               value
  <dbl> <chr> <chr>                  <chr>
1   111 B     Where are you from?    Paris
2   111 B     Do you like chocolate? Yes  
3   222 A     Where are you from?    Paris
4   222 A     Do you like chocolate? No   
5   333 C     Where are you from?    DC   
6   333 C     Do you like chocolate? Yes  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM