在与我的一位朋友交谈后,我不确定我执行简单测试操作的解决方案是否非常适合在 R 中编程的方式。我对 r 很陌生,所以我可以使用一些反馈如何正确学习而不是编写大量代码。
我的目标只是根据不同的范围对列中的值进行分组。所以我做的是以下内容:
#create a test df
a<-factor(c("a","b","c","d","e","f","g"))
b<-c(1,2,NA,4,5,6,7)
c<-factor(c("a","a","a","d","e","f","a"))
d<-c(1,7,1,7,2,5,4)
df.abcd<-data.frame(a,b,c,d)
df.abcd
# apply groups in new column based on values in d
# groups are 0-2, 3-5, 6-7
df.abcd$groups<-
ifelse(df.abcd$d>-1&df.abcd$d<=2,"0-2",
ifelse(df.abcd$d>2&df.abcd$d<=5,"3-5",
ifelse(df.abcd$d>5&df.abcd$d<=7,"6-7","outside the defined Ranges"
)
)
)
所以这个解决方案对我来说效果很好,但它有很多代码和很多 ifelse 东西。也许应该有一个更优雅的解决方案。
我的朋友告诉我,R 的设计目的不是在数据帧中做这么多工作(在我的例子中,我应用了一个新列),而是直接处理新对象。所以他建议像将组创建为像 Group1<- 这样的对象。由于我自己学习 R,而且我没有教授教我以正确的方式去做(边做边学),我不想避免反对语言的逻辑(如果有这样的事情)。
所以任何帮助和解释将不胜感激。最好的