Удалить все строки из фрейма данных в R? - PullRequest
2 голосов
/ 11 августа 2010

Итак, у меня есть фрейм данных в R, который содержит целые числа, NA и случайный ассортимент строк внутри ячеек. Только один тип данных на ячейку. Что мне интересно, так это как изменить все ячейки, содержащие строки, в NA. Есть идеи, как мне это сделать?

Ответы [ 2 ]

5 голосов
/ 11 августа 2010

Если ваш фрейм данных (df) действительно содержит целые числа, кроме NA и мусора, то его преобразует следующий код:

df2 <- data.frame(lapply(df, function(x) as.numeric(as.character(x))))

Вы получите предупреждение о NA, введенных с помощью принуждения, но это только те строки нечисловых символов, которые превращаются в NA.

Следующий код также работает и более лаконичен, но работает медленнее.

df2 <- apply(df, 2, function(x) as.numeric(as.character(x)))

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

df2 <- cbind(df[,!columnsToChange], apply(df[,columnsToChange], 2, function(x) as.numeric(as.character(x)))

Это выбило бы вещи из строя, но довольно легко дало бы вам то, что вы хотите.

3 голосов
/ 11 августа 2010

Прежде всего, если это data.frame, то типы одинаковы для каждого столбца.Так что сделайте что-то вроде class(data[,3]), чтобы узнать о классе третьего столбца.Затем вы можете использовать as.numeric() и др. В данном столбце для преобразования.Или, по вашим вопросам, data[,3] <- NA, если вы знаете, что хотите заменить этот столбец.

...