我有一个ID为229的学生的csv数据集,其中:
StudID Score Weight
229 65 51
229 45 43
229 82 79
我将计算出学生的得分和体重的平均值,我想从中获得以下信息:
Measurements Mean Value #Measurements and mean value are new column names
Score 64 #score and weight which used to be column names are now under measurements
Weight 57.67
所以我到目前为止所做的如下:
stud_data <- read.csv("student_weight.csv")
stud_mean <- colMeans(stud_data[2:3]) #finding the mean of only score and weight
当我打印stud_mean时,会显示以下内容:
Score Weight
64 57.67
是否可以用我将要获得的格式来格式化输出:
Measurements Mean Value #Measurements and Mean value are new column names
Score 64
Weight 57.67
答案 0 :(得分:1)
我不确定我是否完全理解您要执行的操作。您是否在询问如何一次汇总多个列?还是这与如何重塑汇总数据有关?
关于前者,您可以在基数R中完成
aggregate(cbind(Score, Weight) ~ StudID, df, FUN = mean)
# StudID Score Weight
#1 229 64 57.66667
关于后者,您可以使用stack
重塑
stack(aggregate(cbind(Score, Weight) ~ StudID, df, FUN = mean))
# values ind
#1 229.00000 StudID
#2 64.00000 Score
#3 57.66667 Weight
在这里,我假设您的实际数据包含多个StudID
的数据,因此您可能希望按StudID
汇总数据。
df <- read.table(text =
"StudID Score Weight
229 65 51
229 45 43
229 82 79", header = T)
答案 1 :(得分:1)
这基本上是一个很短的广到长问题,最简单的方法是使用 if not found_username:
print("Username and or password do not exist!")
count += 1
if count == 3:
print("Attempts exceeded")
else:
break
:
tidyr::gather
答案 2 :(得分:1)
您可以在stack
之后使用colMeans
stack(colMeans(df[2:3]))
# values ind
#1 64.00000 Score
#2 57.66667 Weight
要分配列名,我们可以使用setNames
setNames(stack(colMeans(df[2:3])), c("Mean_Value", "Measurements"))
# Mean_Value Measurements
#1 64.00000 Score
#2 57.66667 Weight