Я ценю помощь с переназначения в dataframe в R. Одна из колонн, как этотR перезаказа один столбец в трех столбцах
a
b
c
d
e
f
g
h
i
j
k
l
, и я хотел бы сделать это
a b c
d e f
g h i
j k l
Как это сделать в R или c-shell?
Я ценю помощь с переназначения в dataframe в R. Одна из колонн, как этотR перезаказа один столбец в трех столбцах
a
b
c
d
e
f
g
h
i
j
k
l
, и я хотел бы сделать это
a b c
d e f
g h i
j k l
Как это сделать в R или c-shell?
matrix(your_vector, ncol=3, byrow=TRUE)
Это выполнит свою вторую версию:
orig <- matrix(letters[1:12], ncol=1)
new[ seq(1, 1+ 4*3, by=4), ] <- matrix(orig, ncol=3, byrow=TRUE)
> new
[,1] [,2] [,3]
[1,] "a" "b" "c"
[2,] "0" "0" "0"
[3,] "0" "0" "0"
[4,] "0" "0" "0"
[5,] "d" "e" "f"
[6,] "0" "0" "0"
[7,] "0" "0" "0"
[8,] "0" "0" "0"
[9,] "g" "h" "i"
[10,] "0" "0" "0"
[11,] "0" "0" "0"
[12,] "0" "0" "0"
[13,] "j" "k" "l"
Ключа построить несмежную последовательность строк, которые будут принимать матрицу значений символов в 4 х 3. Поскольку это матрица, она печатается с кавычками, но значения в матрицах фактически не имеют кавычек; они являются просто символами, а не цифрами.
merge
может быть полезным здесь.
Рассмотрите следующие начальные data.frame
. Две колонны, одна буква «а» на «л», следующее число 1 до 12.
mydf <- data.frame(A = letters[1:12], B = 1:12)
Вы уже видели, что для преобразования вектора в матрицу несколько столбцов делаются с помощью matrix(your_vector...)
. Если вы просмотрите код для merge
, вы увидите, что если вы попытаетесь объединить data.frame
с matrix
, матрица преобразуется в data.frame с использованием as.data.frame
, что приводит к именам переменных, таких как «V1», «V2», и так далее.
Мы можем использовать все эти мелочи, чтобы построить команду merge
как следующее:
merge(mydf, matrix(mydf$A, ncol = 3, byrow=TRUE),
by.x = "A", by.y = "V1", all.x = TRUE)
# A B V2 V3
# 1 a 1 b c
# 2 b 2 <NA> <NA>
# 3 c 3 <NA> <NA>
# 4 d 4 e f
# 5 e 5 <NA> <NA>
# 6 f 6 <NA> <NA>
# 7 g 7 h i
# 8 h 8 <NA> <NA>
# 9 i 9 <NA> <NA>
# 10 j 10 k l
# 11 k 11 <NA> <NA>
# 12 l 12 <NA> <NA>
Перетяжка нулями не имеет смысла, так как каждый столбец в data.frame
может иметь только один тип. Таким образом, ваши нули будут преобразованы в символы или факторы.
Конечно, переименование и переупорядочение столбцов - это тривиальное упражнение, которое я оставлю читателю.
спасибо! это сработало! – user2283859
@ user2283859, если это решит вашу проблему, сделайте * рассмотрите * [его принятие] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work). Благодаря! – A5C1D2H2I1M1N2O1R2T1
Что значит переупорядочить - вы пытаетесь превратить один столбец из 12 предметов в три столбца из четырех предметов? Если да, то как он может даже вписываться в один и тот же блок данных? –
Я просто понял, что мой вопрос еще сложнее, так как я хочу, чтобы этот столбец выполнял то, что я сказал, но не изменял другие столбцы. Таким образом, в основном первая строка после переупорядочения будет abc, вторая строка будет 0 0 0, третья строка будет 0 0 0, а четвертая строка будет def, и так далее ... – user2283859
Просьба привести пример своего входные данные (предпочтительно с использованием 'dput') и пример желаемого вывода. –