在R dataframe中使用行和创建新列
我正在尝试在R中做一些我认为非常简单的事情:添加一个包含总计的新列 我创建了一个新的数据集,并遵循这一点,但结果表明它计算的总和是错误的。然后,我采用了另一种有效的方法,但无法将结果附加为列在R dataframe中使用行和创建新列,r,dataframe,R,Dataframe,我正在尝试在R中做一些我认为非常简单的事情:添加一个包含总计的新列 我创建了一个新的数据集,并遵循这一点,但结果表明它计算的总和是错误的。然后,我采用了另一种有效的方法,但无法将结果附加为列 玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具
玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具玩具
#> 2 4 4 3 2
#> 5 5 4 4 3
#> 3 4 4 4 4
#>IUS_12_11_玩具IUS_12_12_玩具总数
#> 3 1 34
#> 4 4 47
#> 2 2 38
#问题在于,根据以下规定,总和是错误的:
行和(IUS_12_玩具)
#> [1] 36 51 42
#好的,现在我想将结果添加为一个新列:
IUS_12_toy[,13]=c(“总计”,行和(IUS_12_toy))
#但我有一个错误:
#>“[中的错误问题是使用了串联“Total”,这将导致长度
1大于行数
IUS_12_toy[,13] <- rowSums(IUS_12_toy)
或使用purrr
library(purrr)
IUS_12_toy %>%
mutate(Total = reduce(., `+`))
另外,如果我们使用索引来创建列,那么默认情况下,data.frame
将使用make.names/nake.unique
执行健全性检查,并附加一个字符作为前缀,即此处为“V”
我们可以直接使用列名作为字符串
IUS_12_toy["Total"] <- rowSums(IUS_12_toy)
IUS_12_toy[“Total”]问题是使用串联“Total”,这将导致长度大于行数
IUS_12_toy[,13] <- rowSums(IUS_12_toy)
或使用purrr
library(purrr)
IUS_12_toy %>%
mutate(Total = reduce(., `+`))
另外,如果我们使用索引来创建列,那么默认情况下,data.frame
将使用make.names/nake.unique
执行健全性检查,并附加一个字符作为前缀,即此处为“V”
我们可以直接使用列名作为字符串
IUS_12_toy["Total"] <- rowSums(IUS_12_toy)
IUS_12_toy[“Total”]Run?装饰totals
,您将在文档的第一句中看到解释:
此函数默认情况下排除input data.frame的第一列,假设它包含描述性变量,但可以通过在…参数中指定要求和的列来重写此函数
如果有行的标识符,可以添加它并将其移动到第一列,然后继续操作
要对所有列求和,请为..
的值指定everything()
:
IUS_12_toy %>%
adorn_totals("col",,,,everything())
这将生成您所需的值。运行?装饰总计
,您将在文档的第一句中看到解释:
此函数默认情况下排除input data.frame的第一列,假设它包含描述性变量,但可以通过在…参数中指定要求和的列来重写此函数
如果有行的标识符,可以添加它并将其移动到第一列,然后继续操作
要对所有列求和,请为..
的值指定everything()
:
IUS_12_toy %>%
adorn_totals("col",,,,everything())
这将生成您所需的值。谢谢您的帮助。但我有一个问题:我原始数据集中的列是因子。如果我将它们更改为数字,我可以计算行和,但我无法添加额外的列。我尝试创建一个玩具示例,但在玩具示例中,一切正常!发布问题的最佳方式是什么t表示原始数据集?如果它是因子
,则为Nottolina。您必须在行和
步骤之前,通过as.numeric(as.character(df1$column))
将其转换为数值,如果(is.factor,~as.numeric(as.character(.),则对所有列df1[]%进行变异
@Nottolina您可以使用dput
显示结构。即dput(液滴液位(头部(您的数据)))
并使用dput
的输出副本编辑您的帖子。谢谢您的帮助。但我有一个问题:我原始数据集中的列是因子。如果我将它们更改为数字,我可以计算行和,但我无法添加额外的列。我尝试创建一个玩具示例,但在玩具示例中,一切都正常!这是什么发布涉及原始数据集的问题的最佳方法是什么?@Nottolina如果它是因子
。您必须将其转换为数值,方法是在行和
步骤之前使用as.numeric(as.character(df1$column))
,对于所有列df1[]%如果(is.factor,~as.numeric(as.character(.)),则使用mutate\u
@Nottolina您可以使用dput
来显示结构。即dput(droplevels(head(yourdata))
并使用dput的输出副本编辑您的帖子