Я первый таймер, так любезно простите за любые упущения/ошибки (пожалуйста, дайте обратную связь, хотя :)R кадр данных манипуляции/transfomation с использованием ldply
Я пытаюсь написать некоторый R код, который будет принимать набор диафрагмы и сделать лог-преобразование числовых столбцов в соответствии с некоторым критерием, скажем, если асимметрия> 0,2. Я попытался использовать ldply, но это не совсем дает мне результат, который я хочу. Это дает мне транспонированный фрейм данных, имена переменных отсутствуют, а записи с нечисловыми столбцами перепутаны.
Перед отправкой на этот вопрос я искал и нашел следующие темы, связанные, но не вполне отвечают, что именно я искал
Selecting only numeric columns from a data frame
extract only numeric columns from data frame данных
Ниже приведен код. Цените помощь!
data(iris)
df <- iris
df <- ldply(names(df), function(x)
{
if (class(df[[x]])=="numeric")
{
tmp <- df[[x]][!is.na(df[[x]])]
if (abs(skewness(tmp)) > 0.2)
{
df[[x]] <- log10(1 + df[[x]] )
}
else df[[x]] <- df[[x]]
}
else df[[x]] <- df[[x]]
#df[[x]] <- data.frame(df[[x]])
#df2 <- cbind(df2, df[[x]])
#return(NULL)
}
)
Вам может не понадобиться 'ldply', использовать опции' lapply' и другие базовые R. Из какого пакета вы получили «асимметрию»? – akrun