Tôi đang sử dụng đối số patterns()
trong data.table::melt()
để làm nóng dữ liệu có các cột có nhiều mẫu được xác định dễ dàng. Nó đang làm việc, nhưng tôi không thấy làm thế nào tôi có thể tạo ra một biến chỉ số ký tự thay vì phân tích số mặc định.Chuyển đổi biểu diễn dạng số của cột 'biến' sang chuỗi gốc sau khi làm tan chảy các mẫu
Ví dụ, trong một cột chó và mèo được đánh số ... hãy nhìn vào cột "biến":
A = data.table(idcol = c(1:5),
dog_1 = c(1:5), cat_1 = c(101:105),
dog_2 = c(6:10), cat_2 = c(106:110),
dog_3 = c(11:15), cat_3 = c(111:115))
head(melt(A, measure = patterns("^dog", "^cat"), value.name = c("dog", "cat")))
idcol variable dog cat
1: 1 1 1 101
2: 2 1 2 102
3: 3 1 3 103
4: 4 1 4 104
5: 5 1 5 105
6: 1 2 6 106
Tuy nhiên, trong B các cột chó và mèo được đánh số với văn bản , nhưng cột "biến" vẫn là số.
B = data.table(idcol = c(1:5),
dog_one = c(1:5), cat_one = c(101:105),
dog_two = c(6:10), cat_two = c(106:110),
dog_three = c(11:15), cat_three = c(111:115))
head(melt(B, measure = patterns("^dog", "^cat"), value.name = c("dog", "cat")))
idcol variable dog cat
1: 1 1 1 101
2: 2 1 2 102
3: 3 1 3 103
4: 4 1 4 104
5: 5 1 5 105
6: 1 2 6 106
Làm cách nào để điền vào cột "biến" với một/hai/ba thay vì 1/2/3?
có, biến col. mức độ cần phải được xây dựng bằng tay vẫn còn .. Thumbs up cho base :: reshape. – Arun
Liên kết vấn đề github cực kỳ hữu ích! – Nancy