2016-10-12 5 views
0

У меня есть следующая проблема, которую я довольно бороться, чтобы решить:Данные основаны на условиях

У меня есть кадр данных, глядя, как:

row1 = c(55.7, NA, NA, "inf", 4.19, 99, 4, 15, 16, NA, 13, 0.1, 0.8, 51, NA, 44) 
row2 = c(13, 1, 81, 6, NA, 0.3, NA, NA, 1.4, 89, NA, NA, 2.1, 99, 0.5, NA) 
df = data.frame(row1, row2) 
df = as.data.frame(t(df)) 

Первая проблема заключается в том, что мне нужно изменить значения «inf» до числового == 100.

Все, что я использую, не помогает. Это создает дополнительную Nas:

data[data =="inf"] = 100 

Это просто не работает:

data[is.na(data)] = "Skip" 

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

Вторая проблема сложнее. Мне нужно преобразовать фрейм данных в соответствии с наибольшими значениями столбцов с низшему столбцов, чтобы получить somethink так:

row3 = c("row1","V4", "V12") 
row4 = c("row1", "V6", "V13") 
df2 = data.frame(row3, row4) 
df2 = t(df2) 

И так далее для всех строк и столбцов.

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

Большое спасибо

ответ

0

Для вашей первой задачи попытаться преобразовать значения символа:

df[]<-lapply(df, as.character) 
df[df =="inf"] = "100" 

затем преобразовать его обратно в фактор:

df[]<-lapply(df, as.factor)