Estoy luchando por combinar dos marcos de datos; ambos constan de una sola columna, aunque con diferentes longitudes.
Mi primer marco de datos, llamado 'FamilyID' tiene este aspecto:
FamilyID <- structure(list(Family_No = c(1034, 1056, 1064, 1091, 1101, 1101,
11, 113, 113, 1133, 1133, 115, 116)), row.names = c(NA, -13L), class = c("tbl_df",
"tbl", "data.frame"))
Mi segundo marco de datos, llamado 'FID', tiene este aspecto:
FID <- structure(list(Family_No = c(1034, 1034, 1056, 1056, 1064, 1064,
1091, 1091, 1101, 1101, 11, 11, 113, 113)), row.names = c(NA,
-14L), class = c("tbl_df", "tbl", "data.frame"))
Como puedes ver, son muy similares, el segundo es simplemente un duplicado del primero, pero ahora necesito combinarlos en una columna pero MANTENER todos los valores iniciales, de modo que tenga 3 o 4 de cada valor individual (por ejemplo, para el primer valor 1034, tengo uno de ellos en el primer marco de datos y dos en el segundo marco de datos, por lo que finalmente quiero tres de ellos en el marco de datos final). Sé que con la combinación se eliminarán los duplicados, pero necesito conservar todos los valores. Alguien me puede ayudarcon eso?
Utilice rbind. Si los nombres de columna son diferentes, úselo con setNames
AnilGoyal
28/03/2021 a las 10:04
¿No es esto un simple enlace? rbind(ID de familia, FID)
- Ronak Shah
28/03/2021 a las 13:47
------------------------------------
Puedes utilizar esta línea de código:
new_df <- data.frame(Family_No = cbind(c(FamilyID$Family_No, FID$Family_No)))
datos:
# dataframe 1
FamilyID <- structure(list(Family_No = c(1034, 1056, 1064, 1091, 1101, 1101,
11, 113, 113, 1133, 1133, 115, 116)), row.names = c(NA, -13L), class = c("tbl_df",
"tbl", "data.frame"))
# dataframe 2
FID <- structure(list(Family_No = c(1034, 1034, 1056, 1056, 1064, 1064,
1091, 1091, 1101, 1101, 11, 11, 113, 113)), row.names = c(NA,
-14L), class = c("tbl_df", "tbl", "data.frame"))
Salida:
> new_df
Family_No
1 1034
2 1056
3 1064
4 1091
5 1101
6 1101
7 11
8 113
9 113
10 1133
11 1133
12 115
13 116
14 1034
15 1034
16 1056
17 1056
18 1064
19 1064
20 1091
21 1091
22 1101
23 1101
24 11
25 11
26 113
27 113
2
¡Esto funcionó! Tengo mi salida que se parece a la tuya. ¿Hay alguna manera de reorganizar mis datos para que los valores coincidentes se alineen entre sí? En última instancia, necesito que mis datos (esta columna) me gusten así: 1034 1034 1034 1056 1056 1056 1064 1064 1064 1091 1091 1091 1101 1101 1101 1101, etc.
Linda
29 de marzo de 2021 a las 1:45
Puedes ordenar con sort(new_df[,1], decreciente = TRUE). Esto ordena la columna en orden decreciente.
- TarJae
30 de marzo de 2021 a las 6:46
------------------------------------
También puede colocar los conjuntos de datos (con una sola columna) en una lista y eliminarlos para crear un vector, luego ajustarlos con data.frame
data.frame(Family_No = unlist(list(FamilyID, FID)))