通过在R中添加零来塑造数据框

努拉

我在第一个列中有一个带有距离的数据框,在第二个列中有一个类:

data.tab <- read.table(text = "
644 1
76  1
78  1
350 1 
45  1
37  2
366 2 
46  2
71  3
28  3 
97  3
30  3
55  3 
65  3
116 3  
30  3
18  4
143 4
99  4")

我想通过根据最长的类将零添加到新的数据框中。结果将是:

data.tab <- read.table(text = "
1 644 76  78 350 45 0  0  0
2 37  366 46  0  0  0  0  0
3 71  28  97 30 55 65 116 30 
4 18  143 99  0  0  0  0  0")
生活

使用df名称代替data.tab

MAX <- max(table(df$V2))
t(sapply(split(df$V1, df$V2), function(x) c(x, rep(0, MAX-length(x)))))

(其想法是将V1分成由V2定义的组,通过0在必要时在末尾添加,使向量的长度相等,然后将其组合成单个矩阵。sapply自动但按列地执行最后一位,因此t是必需的。 )

另一种使用方式 length<-

U <- unstack(df) # a hack learned from G.Grothendieck's answer
U <- with(df, split(V1,V2)) # more readable version of the above
M <- max(lengths(U))
R <- t(sapply(U, "length<-", M)) # setting all lengths equal 
replace(R, is.na(R), 0)  # replacing NAs by zeroes

一个(不太可读的)单行代码正在做同样的事情:

"[<-"(R<-t(sapply(U<-unstack(df),"length<-",max(lengths(U)))),is.na(R),0)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在熊猫数据框的字符串中添加前导零

通过比较熊猫中的多列来选择数据框

通过匹配R中的嵌套列表来子集和加入数据框

在R中的数据框中将负值转换为零

通过迭代添加行来创建数据框

通过在R中的数据表中的行上添加条件来创建新列

通过将数据框包含在R中的表中来从Outlook发送电子邮件

如何通过合并R中不同数据框中具有相同名称的列来创建新数据框?

通过在R中设置和引用两个数据框来创建新的数据框

如何通过在数据框R中创建列值列表来对列值进行分组

R基于修改列表中数据框的其他列来添加列

通过添加另一列来对我的熊猫数据框中的重复项进行排序

在R的数据框中插入带有零的行

通过过滤不等于R中的值的子集来创建多个数据框

通过在熊猫中添加来自不同数据框的列来创建列

通过在R中的组合中添加新字母来创建数据框

我想通过在数据框中添加2个连续的列来插入新列

通过在另一数据框中添加带标签数据的列来创建

如何通过在pyspark中的特定条件下添加列来丰富数据框?

如何通过顺序比较R中的数据框列来创建矩阵

通过添加观察值来减少数据框的行

想要通过在循环中对数据框进行子集化并根据 i 值分配每个数据框名称来在 R 中创建新数据框

通过在大型数据框中交叉来合并两列

通过 R 中的分组因子将数值添加到数据框

通过向每个观察值添加数值来改变数据框中的不同列

通过在 for 循环 (Python) 中添加迭代值作为后缀来重命名数据框名称

如何通过循环遍历 R 中的垂直数据框来创建多个图?

如何通过识别数据框中的公共列来添加数据框的所有数据?

通过将列值转换为行值来转换 R 中的数据框