关于ifelse函数,我有一个非常奇怪的问题:它不会返回一个因子(我想要的),而是像因子的位置一样.
我使用的数据集可以在这里下载.
..在df中创建一个新列,其中包含国家/地区的名称,如果该国家/地区属于前12个最常见的国家/地区(在"答案"列中).否则它应该包含"其他"
......是
... R返回一些非常奇怪的东西:它返回前10个国家的因子级别(1到181之间)的位置,以及其他国家的"其他"(这是正常的).这一行返回错误的值:
aDDs$answer, ## then it should be named as aDDs$answer **THIS IS THE PROBLEM**
Run Code Online (Sandbox Code Playgroud)
## create a list with most frequent country names
temp <- row.names(as.data.frame(summary(aDDs$answer, max=12))) # create a df or something else with the summary output.
colnames(temp)[1]="freq"
"India" %in% temp #check if it works (yes)
## create new column that filters top results
aDDs$top <- ifelse(
aDDs$answer %in% temp, ## …Run Code Online (Sandbox Code Playgroud) 我的目标是创建一个长数据框的简单密度或条形图,显示课程中国籍的相对频率(MOOC).我只是不想要那里的所有国籍,只有前10名.我创建了这个例子df下面+我用于绘图的ggplot2代码.
d=data.frame(course=sample(LETTERS[1:5], 500,replace=T),nationality=as.factor(sample(1:172,500,replace=T)))
mm <- ggplot(d, aes(x=nationality, colour=factor(course)))
mm + geom_bar() + theme_classic()
Run Code Online (Sandbox Code Playgroud)
......但是如上所述:我想要基于频率的整个数据集的子集.以上显示了所有数据.
PS.我为上下文添加了ggplot2代码,但也因为ggplot2本身可能有一些东西可以使这成为可能(我怀疑它).
编辑2014-12-11: 当前的答案使用ddplyr或表方法来达到所需的子集,但我想知道是否有更直接的方法来实现相同的...我会让它留下来,看看是否有是其他方式.
我想从收件箱中放回的每封邮件中删除标签"Followup".我尝试过几件事,但仍然没有成功.我希望有人可以帮助我或指出我正确的方向.有关的职能是:
function moveToInbox(page) {
GmailApp.moveThreadsToInbox(page);
// GmailApp.markThreadsUnread(page);
// GmailApp.starMessages(page)
var label = GmailApp.getUserLabelByName("FollowUp");
var firstThread = GmailApp.getInboxThreads(0,1)[0];
var coupleOfMessages = firstThread.getMessages().slice(0, 10);
GmailApp.starMessages(coupleOfMessages);
label.removeFromThread(firstThread);
}
Run Code Online (Sandbox Code Playgroud)
整个脚本是:
function getLabelName(i, labelSuffixString) {
return "FollowUp/" + i + labelSuffixString;
}
function setup() {
for (var i = 1; i <= 7; ++i) {
GmailApp.createLabel(getLabelName(i, "days"));
GmailApp.createLabel(getLabelName(i, "weeks"));
}
GmailApp.createLabel("FollowUp");
}
function moveToInbox(page) {
GmailApp.moveThreadsToInbox(page);
// GmailApp.markThreadsUnread(page);
// GmailApp.starMessages(page)
var label = GmailApp.getUserLabelByName("FollowUp");
var firstThread = GmailApp.getInboxThreads(0,1)[0];
var coupleOfMessages = firstThread.getMessages().slice(0, 10);
GmailApp.starMessages(coupleOfMessages);
label.removeFromThread(firstThread); …Run Code Online (Sandbox Code Playgroud) 我是R的初学者,但我知道在这里提问之前我应该寻找答案.我做了,查看了帮助文件,但无济于事.问题如下:当我要求提供子集X的摘要时,两列的输出如下所示.我想只有答案的输出,我能够,但它的呈现方式不同(见底部的输出).我希望将结果显示为表格,而不是列表.
summary(X, max = 12)
Run Code Online (Sandbox Code Playgroud)
结果是:
student answer
Min. : 335 0 - Not at all likely : 35
1st Qu.: 855480 1 : 18
Median :1831962 10 - Extremely likely :9336
Mean :1519041 2 : 23
3rd Qu.:2183663 3 : 19
Max. :2607132 4 : 15
5 - Neutral : 939
6 : 235
7 : 921
8 :1844
9 :1194
option_i4x-DelftX-ET3034TUx-problem-b3d30df864ca41ffa0170e790f01a783_2_1_dummy_default: 71
Run Code Online (Sandbox Code Playgroud)
因为我只对答案的摘要统计感兴趣,所以我用过
summary(X$answer, max = 12)
Run Code Online (Sandbox Code Playgroud)
然后我将下面的列表作为答案.
0 - Not at all likely
35
1
18 …Run Code Online (Sandbox Code Playgroud) 我想从现有数据框创建一个新的数据框,并按向量中的定义命名:
我有一个包含许多不同问题的数据集,为了更快地浏览数据集,我开发了一个可以调用的泛型函数列表.对于每个问题,我定义了具体的值,如下所示.在第二部分中,我或多或少地为问题创建了一个干净的数据集,该数据集被保存为名为"questionid"的数据框.因为每个问题都会覆盖该变量,所以我想创建此数据帧的副本,并按照'questionname'(在本例中为"A1")中的指定调用它.我发现很难找到简单的方法来做到这一点.我希望有一个人可以帮助我.
# Specify vectors and variables
question <- "Would you recommend edX to a friend of you?"
questionname <- "A1"
edXid <- "i4x-DelftX-ET3034TUx-problem-b3d30df864ca41ffa0170e790f01a783_2_1"
clevels <- c("0 - Not at all likely", "1", "2", "3", "4", "5 - Neutral", "6", "7", "8", "9", "10 - Extremely likely")
csvname <- paste(questionname, ".csv", sep="")
pngname <- paste(questionname, ".png", sep="")
# Run code
questionid <- subset(allDatasolar, allDatasolar[,3]==edXid, select = -c(X,question))
questionid <- questionid[-grep("dummy", questionid$answer), ]
questionid <- droplevels(questionid)
# …Run Code Online (Sandbox Code Playgroud) 这可能是一个非常基本的问题......我有一个简单的数据框,每个课程有不同的观察结果.我希望R每个课程返回行数(在我的情况下等于观察数).
例如:
DF <- structure(list(age = c(36, 21, 20, 32, 24), course = c("AERO",
"AERO", "CREDIT", "CREDIT", "SOLAR")), .Names = c("age", "course"), class = "data.frame", row.names = c(NA,
-5L))
Run Code Online (Sandbox Code Playgroud)
然后我想要有类似的东西
nrow(DF, by=course)
..返回每个课程的行数.我知道那nrow(DF, by=course)不存在,但还有什么吗?
我使用了子集,但后来我必须定义每个子集.
我在子集 A1 中绘制了因子变量“answer”的图。我想减小两个轴上的文本大小,以适应 x 轴上的两个极值。但是,使用 cex.axis 时,仅影响 y 标签上的字体大小,而不影响x 轴上的字体大小。为什么会这样,我该如何改变?
我使用的功能是:
plot(A1$answer, main = "Would you recommend edX to a friend of you?", xlab = "Answer", ylab = "#students", col='lightblue', cex.axis=0.75, font=3, family='mono'); box(col='lightblue');
Run Code Online (Sandbox Code Playgroud)
这是输出:
