r - 如何从 data.frame 创建一个表格,其中一个单元格可以使用 R 有多个值
问题描述
我曾尝试查看备忘单并查看此处提出的其他问题,但未能找到答案。
我正在使用R和我的 data.frame 看起来像这样:
我想将第二列设为垂直类别,并将第三列设为水平类别。然后,第一列将与其行中的相应类别匹配。
这是我要如何格式化表格的示例:
有没有办法编写代码来执行此操作以避免使用 Excel 和 Word 创建表格?
解决方案
试试这个:
df = data.frame(let = LETTERS[1:12],
vert = c(10, 10, 2.5, 5, 10, 5, 2.5, 10, 1.25, 1.25, 1.25, 1.25),
hor = c(2,2,3,2,4,2,3,4,1,4,4,1),
stringsAsFactors = F)
# find unique combinations
positions = expand.grid(unique(df$vert), unique(df$hor))
# pre-allocate matrix
M = matrix(ncol = length(unique(df$hor)),
nrow = length(unique(df$vert)))
rownames(M) <- sort(unique(df$vert))
colnames(M) <- sort(unique(df$hor))
# loop over valid positions and put them in the matrix
for (i in c(1:nrow(positions))){
# get row
row = as.numeric(positions[i,])
# gather all entries that go in position
valid = df[df$vert == row[1] & df$hor == row[2], 'let']
valid = paste(valid, collapse=",")
# get matrix indices
vert_i <- which(rownames(M) == row[1])
horiz_i <- which(colnames(M) == row[2])
# put the data in the matrix
M[vert_i, horiz_i] <- valid
}
print(M)
它可能更有效,但它可以完成工作。
推荐阅读
- angular - 如何创建 Angular Material Dialog 工厂?
- javascript - 我们如何从 js Map 对象中删除特定对象?
- c# - .net核心依赖注入,带参数注入
- linux - 在 bash 脚本中调用别名命令
- azure-devops - VSTS 中的平均速度计算
- java - Jhipster gateway 需要完整的身份验证才能访问此资源
- c++ - RAD Studio (C++ Builder) 10.2 Tokyo:隐藏 TListView 垂直滚动条
- angular - 构建后未包含在 lib 中的 Angular 6 库资产
- python - 尝试在命令提示符中从 IDLE 运行 .py 脚本时出现“SyntaxError: Invalid Syntax”
- python - 类python中缺少对象时的函数调用