R dplyr向列添加越来越多的数字
我有一个时间序列数据,我想在左边增加一个数字。 例如,在V1处我想添加1,在V2处我想添加2,因此在VN处,列将接收+N的加法 由于我的心智模型专注于类似dplyr的语法,我真的希望尽可能避免循环操作 我的想法是,我希望确保在订购/排列这些时间序列数据时,最后一列将具有最高的重要性。这可以通过稍后获取逐行求和来完成R dplyr向列添加越来越多的数字,r,dplyr,R,Dplyr,我有一个时间序列数据,我想在左边增加一个数字。 例如,在V1处我想添加1,在V2处我想添加2,因此在VN处,列将接收+N的加法 由于我的心智模型专注于类似dplyr的语法,我真的希望尽可能避免循环操作 我的想法是,我希望确保在订购/排列这些时间序列数据时,最后一列将具有最高的重要性。这可以通过稍后获取逐行求和来完成 set.seed(1990) ID <- rep(c('A','B','C'),each = 1) n <- sample(c(0,1), replace=TRUE, s
set.seed(1990)
ID <- rep(c('A','B','C'),each = 1)
n <- sample(c(0,1), replace=TRUE, size=45)
df <- tibble(ID)
df <- cbind(df, as.data.frame(matrix(n, nrow = 3)))
到目前为止,我的表格没有正确排序,因为时间序列在这里和那里有很多间隙
谢谢!
以下是使用1个贴图和2个扫描的两个基本R选项 或者使用类似于base R方法的purrr map2:
df[-1] <- purrr::map2(df[-1], seq_along(df[-1]), `+`)
下面是使用1个贴图和2个扫描的两个基本R选项 或者使用类似于base R方法的purrr map2:
df[-1] <- purrr::map2(df[-1], seq_along(df[-1]), `+`)
您可以从tidyr包(属于tidyverse)中使用pivot_使df变长,添加一个包含要添加的数字的虚拟行,执行加法,删除虚拟行并将其恢复为更宽的形式 图书馆管理员 设定于1990年 ID% 选择rn%>% 支点更宽 >一个tibble:3x16 >ID V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 > >1 A 1 3 4 6 8 9 11 12 >2 B 1 3 4 5 6 8 9 10 11 12 >3 C 2 3 3 5 6 7 8 9 10 12 >…还有3个变量:V13、V14、V15
您可以从tidyr包(属于tidyverse)中使用pivot_使df变长,添加一个包含要添加的数字的虚拟行,执行加法,删除虚拟行并将其恢复为更宽的形式 图书馆管理员 设定于1990年 ID% 选择rn%>% 支点更宽 >一个tibble:3x16 >ID V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 > >1 A 1 3 4 6 8 9 11 12 >2 B 1 3 4 5 6 8 9 10 11 12 >3 C 2 3 3 5 6 7 8 9 10 12 >…还有3个变量:V13、V14、V15
我喜欢扫描选项。如果只是在df中添加一个矩阵呢?你是说重复使用相同长度的值来生成df和要添加的值,以便我们可以直接添加它们吗?毫无疑问,是这样的一些变化。感谢@RonakShah,我选择这个答案是因为它捕获了dplyr语法,我还了解了Cross等新功能。然而,我正在将我的R visual推广到Power BI,不幸的是,Power BI服务仍然不是最新的,这意味着不支持Cross。当然支持您提供的其他变体。我喜欢扫描选项。如果只是在df中添加一个矩阵呢?你是说重复使用相同长度的值来生成df和要添加的值,以便我们可以直接添加它们吗?毫无疑问,是这样的一些变化。感谢@RonakShah,我选择这个答案是因为它捕获了dplyr语法,我还了解了Cross等新功能。然而,我正在将我的R visual推广到Power BI,不幸的是,Power BI服务仍然不是最新的,这意味着不支持Cross。当然支持您提供的其他变体。感谢@MarBlo,我最终使用了此变体,因为Power BI服务dplyr版本仍然不是最新版本,这意味着dplyr的一些后续功能(如Cross)无法使用。另外,您的回答让我可以更灵活地在mutate语句中添加条件。谢谢@MarBlo,我最终使用了这种变体,因为Power BI服务dplyr版本仍然不是最新的,这意味着dplyr的一些后续功能(如Cross)无法使用。另外,您的回答使我能够更灵活地在mutate语句中添加条件。
df[-1] <- purrr::map2(df[-1], seq_along(df[-1]), `+`)
df
# ID V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15
#1 A 1 3 3 4 6 6 8 8 9 11 12 12 13 15 16
#2 B 1 3 4 5 5 6 8 8 9 10 11 12 14 14 15
#3 C 2 3 3 5 6 7 8 8 9 10 12 12 14 15 16