Используя R, мне нужна помощь в преобразовании нечислового c столбца в два числовых c. Я хочу разделить нечисловые c данные в столбце x, при этом значение перед da sh переходит в один столбец (Start), а значение после da sh переходит в другой столбец (End). Затем я хочу создать новый столбец numeri c, содержащий разницу между столбцами Start и End с добавлением 1 к разнице. (Столбец Diff содержит количество лет, поэтому с 2011 по 2018 будет восемь лет.)
При попытке сделать это я столкнулся с неожиданными проблемами. Во-первых, переменная x отображается как фактор. Во-вторых, данные в столбцах «Начало» и «Конец» не были числовыми c, и когда я попытался сделать их числовыми c, чтобы могло произойти вычисление Diff, я получил ошибку приведения. В-третьих, мне не удалось заставить strsplit работать.
Я проверил решения stackoverflow на предмет сопоставимых проблем, но не смог найти того, который представлял бы подходящее для меня решение.
Входные данные просто очень маленький образец того, что находится в фактическом файле
Я бы предпочел решение, использующее dplyr, но я открыт для других.
Input
dput(df)
structure(list(x = c(NA, "1950-1960", "1975-1986", "2011-2018"
)), class = "data.frame", row.names = c(NA, -4L))
Выход
x Start End Diff
1950-1960 1950 1960 11
1975-1986 1975 1986 12
2011-2018 2011 2018 8