2016-04-13 74 views
0

我想創建一個名爲「Standard」的新列作爲三個測試結果的組合(三個不同的列在我的數據集中)。如何從數據集現有列中的結果中創建新列(變量)

  • 如果所有三項測試均爲正面,則該標準將被稱爲「強」。
  • 如果三分之二的測試是肯定的,該標準將被稱爲「中等」
  • 如果只有一個測試是肯定的,該標準將被稱爲「疏」
  • ,如果沒有的測試是肯定的,標準將被稱爲「失敗」。

我在數據集中有大約100條記錄,我想找到一種方法可以在R中做到這一點,而無需手動進行。我沒有嘗試過任何東西,因爲我不知道該怎麼嘗試,而且我對R是新手。任何幫助或提示都將非常感激。謝謝。

數據集是這樣的:

 ID Test_1 Test_2 Test_3 
    1 positive positive positive 
    2 positive negative positive 
    3 positive positive negative 
    4 negative negative positive 
    5 negative positive negative 
    6 negative negative negative 
    7 positive negative negative 

下面是我所期待的最終數據集的樣子:

 ID Test_1 Test_2 Test_3 Standard 
    1 positive positive positive Strong 
    2 positive negative positive Medium 
    3 positive positive negative Medium 
    4 negative negative positive Scanty 
    5 negative positive negative Scanty 
    6 negative negative negative Failed 
    7 positive negative negative Scanty 

回答

1
的一種方式

這裏有一個選項,使用rowSums來索引標準值的向量(注意Ÿ必須以正確的順序)

idx <- rowSums(df[-1] == "positive") +1L 
df$Standard <- c("Failed", "Scanty", "Medium", "Strong")[idx] 

結果:

> df 
    ID Test_1 Test_2 Test_3 Standard 
1 1 positive positive positive Strong 
2 2 positive negative positive Medium 
3 3 positive positive negative Medium 
4 4 negative negative positive Scanty 
5 5 negative positive negative Scanty 
6 6 negative negative negative Failed 
7 7 positive negative negative Scanty 
+0

Docendos,感謝您爲我提供解決方案。我真的很感激它。 – ddkunda

0

ifelse是做

df$new <- apply(df[,-1], 1, function(i) length(i[i == 'positive'])) 
df$standard <- ifelse(df$new == 3, 'Strong', ifelse(df$new == 2, 'Medium', ifelse(df$new == 1, 'Scanty', 'Failed'))) 
df 
#  ID Test_1 Test_2 Test_3 new standard 
# 1 1 positive positive positive 3 Strong 
# 2 2 positive negative positive 2 Medium 
# 3 3 positive positive negative 2 Medium 
# 4 4 negative negative positive 1 Scanty 
# 5 5 negative positive negative 1 Scanty 
# 6 6 negative negative negative 0 Failed 
# 7 7 positive negative negative 1 Scanty 
+1

索托斯,非常感謝您的幫助。非常感謝 – ddkunda

0

您還可以使用mutate從包plyr。它可以通過添加新的或替換現有的列來改變數據框架。

+1

恐怕沒有回答這個問題 –

相關問題