【发布时间】:2017-09-18 19:44:02
【问题描述】:
我认为我无法找到发布此问题的类似版本,因为我觉得这是一个相对独特的问题,但是如果我弄错了,请指出正确的方向。我正在使用以下需要转换为数据框的向量:
myvec = structure(c(1.03, 2.3, -1.2, -0.09, -0.31, -0.51, 3.4, 3, 0.07,
0.02, 1.05, -0.02, 2.03), .Names = c("Intercept", "DEF-1017",
"DEF-1025", "DEF-103", "DEF-1043", "DEF-1046", "DEF-1048", "DEF-1076",
"OFF-1017", "OFF-1025", "OFF-103", "OFF-1046", "OFF-1076"))
head(myvec)
Intercept DEF-1017 DEF-1025 DEF-103 DEF-1043 DEF-1046
1.03 2.30 -1.20 -0.09 -0.31 -0.51
该向量应该具有 7 个不同用户(用户 1017、1025、103、1043、1046、1048、1076)的进攻(OFF)和防御(DEF)系数,但是缺少两个用户的进攻系数。我需要将其转换为具有 4 列(防御 ID、进攻 ID、防御系数、进攻系数)的数据框。更具体地说,我想获得以下数据框,以这种方式计算缺失值:
mydf = structure(list(DEFID = c("DEF-1017", "DEF-1025", "DEF-103", "DEF-1043",
"DEF-1046", "DEF-1048", "DEF-1076"), OFFID = c("OFF-1017", "OFF-1025",
"OFF-103", NA, "OFF-1046", NA, "OFF-1076"), DEFVAL = c(2.3, -1.2,
-0.09, -0.31, -0.51, 3.4, 3), OFFVAL = c(0.07, 0.02, 1.05, NA,
-0.02, NA, 2.03)), .Names = c("DEFID", "OFFID", "DEFVAL", "OFFVAL"
), row.names = c(NA, -7L), class = "data.frame")
mydf
DEFID OFFID DEFVAL OFFVAL
1 DEF-1017 OFF-1017 2.30 0.07
2 DEF-1025 OFF-1025 -1.20 0.02
3 DEF-103 OFF-103 -0.09 1.05
4 DEF-1043 <NA> -0.31 NA
5 DEF-1046 OFF-1046 -0.51 -0.02
6 DEF-1048 <NA> 3.40 NA
7 DEF-1076 OFF-1076 3.00 2.03
截距值被删除/不包含在表中,其他所有内容都按预期格式化。对此的任何帮助将不胜感激,谢谢!
【问题讨论】:
标签: r data-manipulation