我有一个看起来像这样的表:
V1 V2 V3 V4
E
O W I
F A Z C
S D K L
我希望横跨/横向排序,以便它看起来像这样:
V1 V2 V3 V4
E
I O W
A C F Z
D K L S
我尝试使用sort
和order
,但我只能将其垂直排序或重新排序整列。是否可以水平排序单个行?
感谢。
注意:我没有看到我的问题和"按行排序数据"之间的相似之处。解决方案甚至不一样。
答案 0 :(得分:2)
你可以尝试
df[] <- t(apply(df,1,function(x) c(sort(x[x!='']), x[x==''])))
df
# V1 V2 V3 V4
#1 E
#2 I O W
#3 A C F Z
#4 D K L S
将缺少的元素改为NA
而不是''
df[df==''] <- NA
df[] <- t(apply(df, 1, function(x) x[order(x)]))
df[is.na(df)] <- '' #if needed
df <- structure(list(V1 = c("E", "O", "F", "S"), V2 = c("", "W", "A",
"D"), V3 = c("", "I", "Z", "K"), V4 = c("", "", "C", "L")), .Names = c("V1",
"V2", "V3", "V4"), class = "data.frame", row.names = c(NA, -4L))