繁体   English   中英

从最后一行复制值并粘贴到第一行r

copy value from last row and paste in to first row r

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个数据框。 在其中,col3和col4中的值在错误的行中乘以1。应该将最下面一行的值放在第一行,最上面一行的应该在第二行,依此类推。

目前

col1 col2  col3  col4
 a    b      c     d
 e     f     g     h
 i      j    k     l

应该

 col1 col2  col3  col4
  a    b      k     l
  e     f     c     d
   i    j     g     h

如何仅将col3和col4中的值向下移动,最后一个变为第一个?

5 个回复

我倾向于使用dplyr的mutate_eachsummarise_each功能相同的功能(S)适用于多列。 这是通过自定义“交换”功能实现更好的可读性的方法:

library(dplyr)

定义一个函数:

swap <- function(x) c(last(x), head(x, -1L))

现在,您可以在“ mutate_each”中使用此自定义函数,并指定要将函数应用到的列:

mutate_each(df, funs(swap), col3, col4)
#  col1 col2 col3 col4
#1    a    b    k    l
#2    e    f    c    d
#3    i    j    g    h

如果您更喜欢基数R,则可以使用稍作修改的函数“ swap2”和“ lapply”将其应用于多个列,以类似的方式进行操作:

# define the function:
swap2 <- function(x) c(tail(x, 1L), head(x, -1L))
# define the columns you want to apply the function to:
cols <- c("col3", "col4")
# Finally, lapply over the data:
df[cols] <- lapply(df[cols], swap2)

数据:

> dput(df)
structure(list(col1 = c("a", "e", "i"), col2 = c("b", "f", "j"
), col3 = c("c", "g", "k"), col4 = c("d", "h", "l")), .Names = c("col1", 
"col2", "col3", "col4"), class = "data.frame", row.names = c(NA, 
-3L))

假设d是您的data.frame:

d$col3 <- c(d$col3[length(d$col3)], d$col3[-length(d$col3)])
d$col4 <- c(d$col4[length(d$col4)], d$col4[-length(d$col4)])

尝试这个

df <- data.frame(col1=c("a", "e", "i"),
                 col2=c("b", "f", "j"),
                 col3=c("c", "g", "k"),
                 col4=c("d", "h", "l"))


df <- cbind(df[, 1:2], df[c(dim(df)[1], 1:(dim(df)[1]-1)), 3:4])

使用字符而不是因素创建数据框:

df <- data.frame(col1=c("a", "e", "i"),
                 col2=c("b", "f", "j"),
                 col3=c("c", "g", "k"),
                 col4=c("d", "h", "l"), stringsAsFactors=FALSE)

df$col3 <- c(df$col3[nrow(df)], df$col3[1:(nrow(df)-1)])
df$col4 <- c(df$col4[nrow(df)], df$col4[1:(nrow(df)-1)])

输出:

> df
  col1 col2 col3 col4
1    a    b    k    l
2    e    f    c    d
3    i    j    g    h

假设df是您的数据帧,则可以使用for循环

temp3 = df[nrow(df),3]
temp4 = df[nrow(df),4]
for(i in 2:nrow(df)){
    df[(i,3] = df[((i - 1),3]
    df[(i,4] = df[((i - 1),4]
}
df[1, 3] = temp3
df[1, 4] = temp4
1 如何从列的最后一行复制值并将其粘贴到列的第一行?

我有一个带有两个工作表的工作簿。 让我们分别将它们称为工作表1和工作表2。在工作表1中,我有一列带有变量的变量,其中该变量滞后i次(使用偏移量)i次。 每次将滞后和R ^ 2保存在一个数组中。 每当我滞后变量时,都需要从工作表2的B列的最后一行粘贴数据。随着变量i的增加,从中复制数据的行(工作表2) ...

2019-10-29 16:39:53 0 73   excel/ vba
2 将复制的列表粘贴到一行的最后

目前,我只能复制并粘贴一行中的内容。 我使用以下代码: 我的问题是我需要复制和粘贴列表。 有人可以告诉我如何使用此代码复制并粘贴列表吗? 我想复制更多行,例如(A25:S25, A27:S27, A30:S30) 它应始终复制相同的行。 ...

4 仅将第一行粘贴到 Javascript Prompt 中,但复制所有行

我正在构建一个 Javascript 调用记录器表单。 用户填写一个包含他们呼叫信息的表单,然后点击“copy”,这将复制一个名为“copyNote”的 div。 该注释将包含多行信息,但注释的第一行始终是主题。 我希望用户能够将文本的第一行粘贴到提示中(作为主题),然后将整个(多行)注释粘贴到用于 ...

6 复制最后一行并粘贴到指定范围

我正在尝试从范围B7:O34复制最后输入的数据并将其粘贴到范围A7:O7 。 当我运行此宏时,我希望它覆盖A7:O7的数据,而不是继续在连续的行中列出数据。 这是我尝试过的: ...

7 Excel 复制并粘贴到最后一行

我想将所有行和一些列从工作表(一)复制到工作表(二)。 我的代码只复制前 64 条记录。 我已经尝试过不同的方式wirh vba。 我有两个命令按钮,每个按钮都以不同的方式尝试。 两者都只给我前 64 行。 ...

2020-12-18 18:13:37 2 24   excel/ vba
8 复制并粘贴到新工作表的最后一行

我目前正在尝试使用VBA从一个工作表中复制并粘贴到新工作表中。 但是我有以下变量 带有要复制数据的工作表是动态的。 列保持不变,但行每周更改。 数据将添加到的新工作表是动态的。 列是相同的,但是新的工作表行每周增加(例如,第700行一个星期,下一个星期800行)。 ...

10 复制数据并将其粘贴到最后一行

我有下面的代码,它与MyCopy10都可以很好地工作。 但是下一个代码MyCopy100不会复制实际电子邮件表的最后一行中的数据。 我不确定问题是否存在。 这是我的代码: ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM