R:使用另一列的值创建列-1

Posted

技术标签:

【中文标题】R:使用另一列的值创建列-1【英文标题】:R: create column with the values of another column -1 【发布时间】:2016-09-26 04:12:38 【问题描述】:

我在 R 中有一个包含 n 值的表。我想创建一个列 B,它具有另一列 A 的值,但将它们“向上”移动了 1 行:

例子:

A    B
_    _
1    2
2    3
3    n
n    n

我知道 A 的第一项将在列 B 中删除,并且我想复制值 n 并移动它到 B 的最后一个“空”点(否则为 0,因为我将所有值“向上”移动)

【问题讨论】:

dplyrdf %>% mutate(B = lead(df$A))。如果你愿意,可以添加%>% tidyr::fill(B),尽管NA 似乎比"n" 更有用。 @Max 这已经在这里回答了***.com/questions/25995257/… 【参考方案1】:
dat <- data.frame(A = c(1, 2, 3, 4))
dat$B <- dat$A[c(2:length(dat$A), length(dat$A))]

应该可以。

【讨论】:

@lmo 谢谢,我看错了。假设他希望第一个值跳到最后。更新了答案。【参考方案2】:
df1$B <- with(df1,c(tail(A,-1),tail(A,1)))

样本数据:

df1 <- data.frame(A = c(1, 2, 3, 0))

输出:

#> df1
#  A B
#1 1 2
#2 2 3
#3 3 0
#4 0 0

【讨论】:

【参考方案3】:

您可以简单地将值替换为

table$B[1:n-1] <- table$A[2:n]

【讨论】:

以上是关于R:使用另一列的值创建列-1的主要内容,如果未能解决你的问题,请参考以下文章

如何根据R中小标题中另一列指示的列的值添加列

如何使用另一列的值从一列创建多列?

是否有一个 R 函数用于在不使用循环的情况下根据另一列的修改版本重新编码列?

创建一个新表,其中包含另一列的值计数列

根据另一列的值修改熊猫中的日期时间列

如果存在于列表中,则根据另一列的值选择列