2015-09-08 2 views
1

Предположим, что у меня есть dataframe с 3-х столбцов, следующим образом:Преобразование dataframe уровней в столбцы в R

Sample Compound  Area 
1 A  Deet  22196836.0 
2 A  Allethrin NA 
3 B  Deet  12890878.4 
4 B  Allethrin 133063.1 
    etc 

В столбце Образец имеет 12 уровней, соединение имеет 324 уровней, и весь dataframe имеет 3888 общие наблюдения. Как бы идти о преобразовании уровней «образец» для отдельных столбцов, то «соединение» уровней в ряды и соответствующие «Площадь» заполняются соответственно, следующим образом:

    A   B   C   D 
1 Deet   22196836.0 12890878.4 
2 Allethrin NA   133063.1 

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

ответ

1

Или просто с пакетом статистики, в комплекте с R:

reshape(df, timevar="Sample", idvar="Compound", direction="wide") 

## Compound Area.A  Area.B 
## 1  Deet 22196836 12890878.4 
## 2 Allethrin  NA 133063.1 
+0

Это сработало прекрасно! Большое спасибо за Вашу помощь!! – rileycattus

2

Использование reshape2 пакета вы можете изменить его в широком формате:

dcast(Compound~Sample,data=dat) 

## Compound  A   B 
## 1 Allethrin  NA 133063.1 
## 2  Deet 22196836 12890878.4 
2

Ваши данные в «длинном формате», и вы хотите его в «широком формате». См. here for a quick explanation.

Есть целый ряд способов, чтобы изменить данные между этими режимами в R. tidyr представляет собой пакет написан специально для этого:

library(tidyr) 
spread(dta, Sample, Area) 
    Compound  A   B 
1 Allethrin  NA 133063.1 
2  Deet 22196836 12890878.4 
Смежные вопросы