为循环,如果/人创建一个新列在df

0

的问题

我的学生在学习R...和已经花了几个小时试图弄清楚这一点,但迄今为止失败了。 也许我会约这错误的方法,或不知道的东西的基础。

我有数据与学生的数量,以及模块的结果--结果是以数字形式,并且我想要改变结果的年级-A、B、C等。 我已经成功地创建一个循环,将打印的等级但是不能怎么把它放在数据框.

数据集的我已经是相当大,所以我已经创建了一些虚拟数据用于下面的例子,代码运行,并且不给我任何错误,但它并不能取代数量的信等级:

`Result <- c(50,67,89,77,65,66,70,73,69,80)

    for (i in Result){
if (i < 16.67) {
print ("G+")
i <- "G+"
} else if (i < 26.67) {
print ("F+")
 i <- "F+"
} else if (i < 36.67) {
print ("E+")
i <- "E+"
} else if (i < 40) {
print ("D-")
i <- "D+"
}else if (i < 43.33) {
 print ("D")
 i <- "D"
}else if (i < 46.67) {
print ("D+")
i <- "D+" 
}else if (i < 50) {
print ("C-")
i <- "C-"
}else if (i < 53.33) {
print ("D")
i <- "D"
}else if (i < 56.67) {
print ("D+")
i <- "D+"
}else if (i < 60) {
print ("B-")
i <- "B-"
}else if (i < 63.33) {
print ("B")
i <- "B"
}else if (i < 66.67) {
print ("B+")
i <- "B+"
}else if (i < 70) {
print ("A-")
i <- "A-"
}else if (i < 73.33) {
print ("A")
i <- "A"
}else if (i < 100) {
print ("A+")
i <- "A+"
}
}

# result: [1] "D"
[1] "A-"
[1] "A+"
[1] "A+"
[1] "B+"
[1] "B+"
[1] "A"
[1] "A"
[1] "A-"
[1] "A+"`   `


    

任何意见将是极大的赞赏。 多谢了, El。

for-loop r
2021-11-23 22:26:35
1

最好的答案

2

把你的实例的数据在数据。框架:

df <- data.frame( result = c(50,67,89,77,65,66,70,73,69,80) )

然后使用 cut() 得到的成绩在新列的数据。框架:

df$grade <- cut(df$result, 
            breaks = c(0, 16.67, 26.67, 36.67, 40, 43.33, 46.67, 50, 53.33, 56.67, 60, 63.33, 66.67, 70, 73.33, 100), 
            labels = c("G+", "F+", "E+", "D-", "D", "D+", "C-", "C", "C+", "B-", "B", "B+", "A-", "A", "A+"))

打印的结果,以检查:

df

   result grade
1      50    C-
2      67    A-
3      89    A+
4      77    A+
5      65    B+
6      66    B+
7      70    A-
8      73     A
9      69    A-
10     80    A+

请注意,(1)就更好地将结果保存入数据。框架,而不是简单地打印和(2)许多事情可以做得更好/更快R如果你不回路;而不是使用R矢量的功能(喜欢 cut!).

2021-11-23 22:42:17

嗨,丹尼,我只是尝试它和它的工作梦! 谢谢你这么多! 我从来没有见过切()之前-我想我还有很多要学习:-)再次感谢,并有一个美好的夜晚。
MsElaineous

你是受欢迎的。 很多很好的、免费的资源可用来帮助你学习: bigbookofr.com/index.html
DanY

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................