-1
我有一個具有兩個奇數變量的數據幀。對於一個變量,每個單元存儲一個列表,其內容只是兩個數字的向量。對於其他變量,每個單元存儲8個數字的三維數組(即使只有兩個維度是必需的)。「unlist」存儲在變量中的列表
我想通過將奇數變量分解爲單獨的變量來簡化數據集。我想出瞭如何使用for循環打破所有數據,但這非常緩慢。我知道申請應該是一般較快,但我無法弄清楚我將如何翻譯這適用。是否有可能,還是有更好的方法來做到這一點?
for (i in 1:nrow(df)){
if (length(df$coordinates.coordinates[[i]]>0)){
df[i,"coordinates.lon"]<- df$coordinates.coordinates[[i]][1]
df[i,"coordinates.lat"]<- df$coordinates.coordinates[[i]][2]
}
if (length(df$place.bounding_box.coordinates[[i]]>0)){
df[i,"place.bounding_box.a.lon"] <-df$place.bounding_box.coordinates[[i]][1,1,1]
df[i,"place.bounding_box.b.lon"] <-df$place.bounding_box.coordinates[[i]][1,2,1]
df[i,"place.bounding_box.c.lon"] <-df$place.bounding_box.coordinates[[i]][1,3,1]
df[i,"place.bounding_box.d.lon"] <-df$place.bounding_box.coordinates[[i]][1,4,1]
df[i,"place.bounding_box.a.lat"] <-df$place.bounding_box.coordinates[[i]][1,1,2]
df[i,"place.bounding_box.b.lat"] <-df$place.bounding_box.coordinates[[i]][1,2,2]
df[i,"place.bounding_box.c.lat"] <-df$place.bounding_box.coordinates[[i]][1,3,2]
df[i,"place.bounding_box.d.lat"] <-df$place.bounding_box.coordinates[[i]][1,4,2]
}
}
編輯 下面是一個例子數據框用一個案例(通過dput)
structure(list(coordinates.coordinates = list(c(112.088477, -7.227974
)), place.bounding_box.coordinates = list(structure(c(112.044456,
112.044456, 112.143242, 112.143242, -7.263067, -7.134563, -7.134563,
-7.263067), .Dim = c(1L, 4L, 2L)))), .Names = c("coordinates.coordinates",
"place.bounding_box.coordinates"), class = c("tbl_df", "data.frame"
), row.names = c(NA, -1L))
萬一有幫助,這是失控,當你嘗試讀取的Twitter流中的數據格式數據使用jsonlite的stream_in函數(使用flatten = TRUE)
您能否提供示例數據? – dd3