或者,你可以這樣做:
# create a sample dataset
data <- data.frame(Code = c(101,103,221,213), Count = c(1254,1566,459,698))
# extract code start and end
start <- sort(unique(substr(data$Code, 1,2)))
end <- sort(unique(substr(data$Code, 3,3)))
# create placeholder dataframe
data2 <- sapply(start, paste0, end)
# where code not in original dataset, write NA
data2[!sapply(c(data2), '%in%', data$Code)] <- NA
# else write the appropriate count
data2[sapply(c(data2), '%in%', data$Code)] <- data$Count[order(data$Code)]
# change column and row names
colnames(data2) <- paste0(start, "x")
rownames(data2) <- paste0("xx", end)
但我猜dcast
在LyzandeR的回答是更優雅。
來源
2017-03-24 11:26:22
ira