Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
求和列并将结果添加到R中的数据帧_R_For Loop_Sum - Fatal编程技术网

求和列并将结果添加到R中的数据帧

求和列并将结果添加到R中的数据帧,r,for-loop,sum,R,For Loop,Sum,目前,我在R中有一个数据帧,其中包含一个具有唯一标识符的变量,其中几个变量只包含二进制响应(0或1) 我的dataframe的简化版本,包含两个示例行: c.names <- c("ID", "male", "female") df <- c("ADH0004", 0, 1, "ADH0005", 1, 0) df <- matrix(df, nrow = 2, byrow = T) df <- as.data.frame(df) names(df) &l

目前,我在R中有一个数据帧,其中包含一个具有唯一标识符的变量,其中几个变量只包含二进制响应(0或1)

我的dataframe的简化版本,包含两个示例行:

c.names <- c("ID", "male", "female")
df <- c("ADH0004", 0, 1,
        "ADH0005", 1, 0)
df <- matrix(df, nrow = 2, byrow = T)
df <- as.data.frame(df)
names(df) <- c.names
df
这使我更接近我想要的结果,但我不知道如何将数据帧中的列和保存为新列,而不是像现在这样简单地输出到控制台

如果您有任何建议,我将不胜感激。当然,我已经在stackoverflow和更广泛的互联网上进行了广泛的研究。 菲尔

你可以试试:

   for(var in colnames(df)[-1]) {
     df[[paste0(var, '_t')]] <- sum(df[[var]])
   }
for(colnames中的var(df)[-1]){
df[[paste0(var,'.'t')]您可以尝试:

   for(var in colnames(df)[-1]) {
     df[[paste0(var, '_t')]] <- sum(df[[var]])
   }
for(colnames中的var(df)[-1]){
df[[paste0(var,'u't')]
#第2列和第3列是字符-转换为数字
df[,2:3]
#您的第2列和第3列是字符-转换为数字

df[,2:3]这是您的数据帧df充满了因素。因此,我选择了2个变量男性和女性,并将它们转换为数字

df[,c(2,3)] <- apply(df[,c(2,3)],2,as.numeric)

这是您的数据帧df充满了因子。所以我选择了2个变量,分别是公变量和母变量,并将它们转换为数值

df[,c(2,3)] <- apply(df[,c(2,3)],2,as.numeric)

通过一个小的编辑,成功了,谢谢!我需要通过只指定第2列和第3列:for(colnames中的var(df[,2:3]){…,排除第一列,否则它尝试添加ID,但失败了。通过一个小的编辑,成功了,谢谢!我需要通过只指定第2列和第3列:for(colnames中的var(df[,2:3]),排除第一列{…,否则它尝试添加ID,但失败了。感谢您的帮助。最后一行似乎没有将列添加到数据帧,它只是在控制台中生成输出。我做错了什么吗?这很有效,谢谢。我有正确数量的“total”变量,可以很容易地用名称(df)重命名您可以使用正则表达式进行名称-保存键入。
names(df)感谢您的帮助。最后一行似乎没有将列添加到数据帧,它只是在控制台中生成输出。我做错了什么吗?这很有效,谢谢。我有正确数量的“total”变量,可以轻松地用名称(df)重命名您可以将regex用于名称-保存键入。
names(df)
   for(var in colnames(df)[-1]) {
     df[[paste0(var, '_t')]] <- sum(df[[var]])
   }
# Your columns 2 & 3 are character - convert to numeric
df[,2:3] <- sapply(df[,2:3] , as.numeric)

# Get column totals for all variables except the first
c <- colSums(df[-1])

# Add to df:  c is transposed so is added as columns
# values of c are recycled, so added to all rows of df
df <- data.frame(df , t(c))
df[,c(2,3)] <- apply(df[,c(2,3)],2,as.numeric)
cbind(df,as.data.frame(t(colSums(df[,c(2,3)])))) # Is it right result???