小编Mat*_*erg的帖子

如何为因子变量的每个级别应用函数?

我有这样的功能:

remove_outliers<-function(x){
qnt<- quantile(x,probs=0.99)
y<- x
y[x>qnt]<- NA
y}
Run Code Online (Sandbox Code Playgroud)

目的是删除位于数据顶部1%的异常值(用NA替换它们的值).如何在因子变量的各个级别上应用此功能?

例如,

A组和B组的原始数据集:

group share
A     100
A     50
A     30
A     10
...   ...
B     100
B     90
B     80
B     60
...   ...
Run Code Online (Sandbox Code Playgroud)

应该像这样结束:

group share
A     NA
A     50
A     30
A     10
...   ...
B     NA
B     90
B     80
B     60
...   ...
Run Code Online (Sandbox Code Playgroud)

我已经试过了,但是这些都改变了数据集输出的结构.

r percentile r-factor

3
推荐指数
1
解决办法
4102
查看次数

在R中,如果值与先前值或后续值不同,如何添加TRUE/FALSE列?

样本数据:
df <- data.frame(time=c(1,2,3,4,5,6, 7), status=c("good", "good", "good", "bad", "good", "good", "good"))

输出:

  time status
1    1   good
2    2   good
3    3   good
4    4    bad
5    5   good
6    6   good
7    7   good
Run Code Online (Sandbox Code Playgroud)

我想添加一个新的statuschangeIF 列status与上面或下面的行不同.输出看起来像这样:

  time status statuschange
1    1   good   NA
2    2   good   TRUE
3    3   good   FALSE
4    4    bad   FALSE
5    5   good   FALSE
6    6   good   TRUE
7    7   good   NA
Run Code Online (Sandbox Code Playgroud)

我有很多方法可以做到这一点,但我无法弄明白.任何帮助表示赞赏!

r

3
推荐指数
1
解决办法
1691
查看次数

有效地加入2个以上的data.tables

我想知道是否有一种内存有效的方式来加入n data.tables(或数据帧).例如,如果我有以下4个data.tables:

df1 = data.table(group = c(1L,2L,3L),value = rnorm(3),key = "group")
df2 = data.table(group = c(2L,1L,3L),value2 = rnorm(3),key = "group")
df3 = data.table(group = c(3L,2L,1L),value3 = rnorm(3),key = "group")
df4 = data.table(group = c(1L,3L,2L),value4 = rnorm(3),key = "group")
Run Code Online (Sandbox Code Playgroud)

我可以像这样合并它们:

merge(df1,merge(df2,merge(df3,df4)))
Run Code Online (Sandbox Code Playgroud)

但这似乎不是一个最佳解决方案.我可能有许多需要合并的data.tables.有没有办法概括上述内容而不将每个连续的合并复制到内存?在data.table之外是否有一种已经被接受的方法可以做到这一点?

r data-manipulation data.table

3
推荐指数
1
解决办法
813
查看次数

如何在SQL语句中使用变量名?

我正在使用R来调用mySQL语句,我在语句之外定义变量,例如

foo = 23;
dbGetQuery(con, "select surname from names WHERE age = '.foo.' ;")
Run Code Online (Sandbox Code Playgroud)

但这会返回一个空集,我用Google搜索并尝试'.&foo.' "包含.foo".'.&& foo."'以及许多不同的组合,但它们都不起作用,我认为这应该是一个mysql问题,而不是我遇到的R特定问题,但不确定.通常变量有$值但不在R.

mysql variables r

2
推荐指数
1
解决办法
3494
查看次数

使用重塑创建纵向数据集

我有数据集:

top100_repository_name  month   monthly_increase    monthly_begin_at    monthly_end_with
Bukkit                  2012-03 9                   431                 440
Bukkit                  2012-04 19                  438                 457
Bukkit                  2012-05 19                  455                 474
CodeIgniter             2012-03 15                  492                 507
CodeIgniter             2012-04 50                  506                 556
CodeIgniter             2012-05 19                  555                 574
Run Code Online (Sandbox Code Playgroud)

我使用以下R代码:

library(reshape)
latent.growth.data <- read.csv(file = "LGC_data.csv", header = TRUE)
melt(latent.growth.data, id = c("top100_repository_name", "month"), measured = c("monthly_end_with"))
cast(latent.growth.data, top100_repository_name + month ~ monthly_end_with)
Run Code Online (Sandbox Code Playgroud)

我想用它来创建具有以下结构的数据集:

top100_repository_name    2012-03    2012-04    2012-05
Bukkit                    440        457        474
CodeIgniter               507        556        574
Run Code Online (Sandbox Code Playgroud)

但是,当我运行我的代码时,我得到以下输出:

Using monthly_end_with as value column.  Use …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation reshape

2
推荐指数
1
解决办法
422
查看次数

在mysql中创建一段时间的ROLLING总和

我有一个列date和列表time_spent.我想为每个日期D找到一段时间内'time_spent'值的总和:(D-7-D),即.过去一周+当天.

我无法找到一种方法来做到这一点,因为我只能找到总和的例子而不是可变时间段的总和.

这是一个数据集示例:

CREATE TABLE rolling_total
(
  date date,
  time_spent int
);

INSERT INTO rolling_total VALUES ('2013-09-01','2'),
('2013-09-02','1'),
('2013-09-03','3'),
('2013-09-04','4'),
('2013-09-05','2'),
('2013-09-06','5'),
('2013-09-07','3'),
('2013-09-08','2'),
('2013-09-09','1'),
('2013-09-10','1'),
('2013-09-11','1'),
('2013-09-12','3'),
('2013-09-13','2'),
('2013-09-14','4'),
('2013-09-15','6'),
('2013-09-16','1'),
('2013-09-17','2'),
('2013-09-18','3'),
('2013-09-19','4'),
('2013-09-20','1'),
('2013-09-21','6'),
('2013-09-22','5'),
('2013-09-23','3'),
('2013-09-24','1'),
('2013-09-25','5'),
('2013-09-26','2'),
('2013-09-27','1'),
('2013-09-28','4'),
('2013-09-29','3'),
('2013-09-30','2')
Run Code Online (Sandbox Code Playgroud)

结果如下:

date       | time_spent   | rolling_week_total
2013-09-01 |           2  |         2
2013-09-02 |           1  |         3
2013-09-03 |           3  |         6
2013-09-04 |           4  |        10
2013-09-05 |           2  | …
Run Code Online (Sandbox Code Playgroud)

mysql sql sum query-optimization rolling-computation

2
推荐指数
1
解决办法
5828
查看次数

使用名称重新排序因子级别

我可以使用像这样的索引重新排序因子的级别

factor(iris$Species,levels(iris$Species)[c(3:1)])
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试按名称重新排序相同的因子,它不起作用:

factor(iris$Species,levels(iris$Species)[c("virginica", "versicolor", "setosa")])
Run Code Online (Sandbox Code Playgroud)

有没有办法使用他们的名字重新排序因子的级别?

r r-factor

2
推荐指数
1
解决办法
2087
查看次数

r import csv 跳过第一行和最后一行

我知道很多帖子已经回答了像我这样的类似问题,但我已经尝试了两天了,似乎我在这里没有看到图片......

\n\n

我得到的 csv 文件如下所示:

\n\n
Werteformat:                wertabh. (Q)\nWerte:  \n01.01.76 00:00  0,363\n02.01.76 00:00  0,464\n...\n31.12.10 00:00  1,03\n01.01.11 00:00  L\xc3\xbccke\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想用数据创建时间线,但无法正确导入 csv。

\n\n

到目前为止我已经尝试过:

\n\n
data<-read.csv2(file, \n            header = FALSE, \n            sep = ";", \n            quote="\\"", \n            dec=",", \n            col.names=c("Datum", "Abfluss"), \n            skip=2, \n            nrows=length(strs)-2, \n            colClasses=c("date","numeric"))`\n
Run Code Online (Sandbox Code Playgroud)\n\n

但后来我明白了

\n\n
"Fehler in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : \n  scan() erwartete \'a real\', bekam \'L\xef\xbf\xbdcke\'"\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以我删除了 colClasses 并且它起作用了,我删除了所有不需要的行。但是:一切都是因素。所以我使用 as.numeric

\n\n
Abfluss1<-as.numeric(data$Abfluss)\n
Run Code Online (Sandbox Code Playgroud)\n\n

知道我可以用 Abfluss 1 进行计算,但这些值与原始 …

csv r numeric r-factor

2
推荐指数
1
解决办法
9919
查看次数

R,ifelse只返回一个值

我有一个数据框如下.

test <- data.frame (myrank = c(0.9629,0.1296), poster = c("dial","bear"))
test
##  myrank poster
## 1 0.9629   dial
## 2 0.1296   bear
Run Code Online (Sandbox Code Playgroud)

我有一个ifelse函数如下,但它只返回一个值,我无法弄清楚为什么.

color <- function (x){
    x$colorchip <- ifelse((((x$myrank> 0) | (x$myrank= 0)) & x$myrank < 0.143),
                          "#FF0000",
                          ifelse((x$myrank > 0.143 & x$myrank < 0.286),
                                 "#FF1919",
                                 ifelse((x$myrank > 0.286 & x$myrank < 0.428571),
                                        "#FF3333",
                                        ifelse((x$myrank > 0.428571 & x$myrank < 0.571429),
                                               "#FFFFFF",
                                               ifelse((x$myrank > 0.571429 & x$myrank < 0.714286),
                                                      "#3333D6",
                                                      ifelse((x$myrank > 0.714286 & x$myrank < 0.857143),
                                                             "#1919D1",
                                                             "#0000CC" …
Run Code Online (Sandbox Code Playgroud)

if-statement r

1
推荐指数
1
解决办法
439
查看次数

我的C代码出了什么问题?(大数要素)

请你帮助我好吗?

我是C的初学者,我的代码不起作用.

我正在尝试确定最大的素数因子600851475143,当我运行代码时,它什么也没做.尝试使用较小的数字然而有效.

long i;

for (i = 600851475143; i > 1; i--)
{
    if (600851475143 % i == 0)
    {
        printf("%d\n", i);
    }
};
Run Code Online (Sandbox Code Playgroud)

c for-loop factorization

1
推荐指数
1
解决办法
216
查看次数