我对编程非常陌生,所以如果我的问题措辞糟糕,我道歉.我有一个像这样的两列的数据框,

record        x

1             NA
1              2
1              1
2             NA
3              9
3              1
4              2
5             NA
6             4
6             NA

我需要创建一个新的数据帧或矩阵,它的行等于record的唯一值,列中包含每个给定的唯一值的x值(如果NA,则为0),如下所示:

1   0   2   1  
2   0   0   0
3   9   1   0
4   2   0   0
5   0   0   0
6   4   0   0

有没有一种简单的方法可以像这样修改数据?

目前,我正在try 使用嵌套的for循环来实现这一点,第一个循环运行的次数等于record的唯一值的数量.然后我判断该值的总出现次数,然后try 另一个重复该次数的for循环?我不太确定我要go 哪里,但如果有一个功能或更简单的方式来思考它,我将非常感谢你的帮助.

推荐答案

Base R替代使用@ JilberUrbina的数据.

df |>
  transform(rn = ave(rep(1L, nrow(df)), record, FUN = seq_along)) |>
  reshape(direction="wide", idvar="record", timevar="rn") |>
  lapply(\(z) if (is.numeric(z)) replace(z, is.na(z), 0) else z) |>
  as.data.frame()
#   record x.1 x.2 x.3
# 1      1   0   2   1
# 2      2   0   0   0
# 3      3   9   1   0
# 4      4   2   0   0
# 5      5   0   0   0
# 6      6   4   0   0

if (is.numeric(z))只是我添加的一个保护措施,以防有替代的非数字列,你会重新塑造.as.data.frame()是因为lapply将返回list,即使它以data.frame开头(实际上只是一个列表).

R相关问答推荐

多个ggpredicate对象的平均值

删除facet_wrap标签之间的水平线

R:更新后无法运行控制台

如何使用`ggplot2::geom_segment()`或`ggspatial::geom_spatial_segment()`来处理不在格林威治中心的sf对象?

更改默认系列1以更改名称

在特定Quarto(reveal.js)幻灯片上隐藏徽标

如何将移除事件分配给动态创建的按钮?

IMF IFS数据以R表示

条形图和在Ploly中悬停的问题

R如何计算现有行的总和以添加新的数据行

正在导出默认的RStudio主题,还是设置括号 colored颜色 ?

如何删除R中除数字元素以外的所有元素

在具有多个响应变量的比例堆叠条形图上方添加总计

通过初始的shiny 应用更新部署的shiny 应用的数据和参数,其中部署的应用程序显示为URL

将列的值乘以在不同数据集中找到的值

访问数据帧中未定义的列时出现R错误

如何编辑被动式数据表?

在使用ggplot2的情况下,如何在使用coord_trans函数的同时,根据未转换的坐标比来定位geom_瓷砖?

按顺序将地块添加到列表

向内存不足的数据帧添加唯一行