小编sha*_*dow的帖子

如何使用包含if-else结构的函数到每个列使用R.

数据框sg如下:

 v1 v2 v3 
 A  B  C  
 B  A  B  
 C  A  A  
Run Code Online (Sandbox Code Playgroud)

我用了一个功能

definition <- funciton(x){
  if (x =='A') definition <- paste(x, ": MINIMUM_RED")   
  else if (x =='B') definition <- paste(x, ": PASSIVE_RED")   ## Passive red (no green demand during red)
  else if (x =='C') definition <- paste(x, ": RED_REQUEST")   ## During red the group has a green demand
  else if (x =='D') definition <- paste(x, ": RED_PRIORITY")  
  else if (x =='E') definition <- paste(x, ": RED_PRIVILEGE")  ## During …
Run Code Online (Sandbox Code Playgroud)

if-statement r apply lapply dataframe

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

将嵌套列表中的元素转换为数据帧

我有如下嵌套列表,

 dput( list(structure(c("123.60", " on"))))
Run Code Online (Sandbox Code Playgroud)

我有兴趣将此嵌套列表中的元素转换为数据帧.例如,输出应如下所示.

      code      description      
      123.60    not stated as uncontrolled, with neurological manifestations
      123.50    not stated as uncontrolled, with ophthalmic manifestations
      .
      .
      .
      123.52    uncontrolled, with ophthalmic manifestations 
Run Code Online (Sandbox Code Playgroud)

需要帮助将这些元素转换为数据框.

r list dataframe

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

dplyr过滤器的相同结果以相同的数据开始

当我试图回答这个问题时,我遇到了一些非常奇怪的行为.下面我定义相同的数据两次,一次只是a data.frame和第二次使用mutate.我检查结果是否相同.然后我尝试做同样的过滤操作.对于第一个数据集,这是有效的,但对于第二个(相同的)数据集,它会失败.任何人都可以找出原因.

似乎这种差异的部分原因是使用ñ.但我不明白为什么这对第二个数据集来说是一个问题,但不是第一个.

# define the same data twice
datos1 <- data.frame(año = 2001:2005, gedad = c(letters[1:5]), año2 = 2001:2005)  
datos2 <- data.frame(año = 2001:2005, gedad = c(letters[1:5])) %>% mutate(año2 = año) 
# check that they are identical
identical(datos1, datos2)
# do same operation
datos1 %>% filter(año2 >= 2003)
## año gedad año2
## 1 2003     c 2003
## 2 2004     d 2004
## 3 2005     e 2005
datos2 %>% filter(año2 >= 2003) …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

如何用R计算组标签的排列?

给出一个矢量:

labels <- c(1,2,3,3,3)
Run Code Online (Sandbox Code Playgroud)

如何获得所有可能的群组重新标记?对于这个例子:

1,2,3,3,3
1,3,2,2,2
2,1,3,3,3
2,3,1,1,1
3,1,2,2,2
3,2,1,1,1
Run Code Online (Sandbox Code Playgroud)

我一直在看permute包,但我不知道如何将它应用于这种情况.

r permutation permute

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

如何使用for循环从矩阵中提取特定单元格?

搜索了一些不同的主题,但我没有找到完全相同的问题.我有一个方形相关矩阵,其中行/列名称是基因.切片的矩阵如下所示.

                Xelaev15073085m Xelaev15073088m Xelaev15073090m Xelaev15073095m
Xelaev15000002m       0.1250128      -0.6368677       0.3119062       0.3980826
Xelaev15000006m       0.4127414      -0.8805597       0.6435158       0.9629489
Xelaev15000007m       0.4012530      -0.8854113       0.6425895       0.9614517
Run Code Online (Sandbox Code Playgroud)

我有一个数据框,其中包含我想从这个大矩阵中提取的基因对.

      V1              V2
1 Xelaev15011657m Xelaev15017932m
2 Xelaev15011587m Xelaev15046612m
3 Xelaev15011594m Xelaev15046616m
4 Xelaev15011597m Xelaev15046617m
5 Xelaev15011603m Xelaev15046624m
6 Xelaev15011654m Xelaev15017928m
Run Code Online (Sandbox Code Playgroud)

我通过数据帧和输出试图环对中的基质细胞matrix["gene1","gene2"](例如,值进行比较时0.1250128 Xelaev15073085mXelaev15000002m).在单个基因的基础上这样做很容易,但是我在for循环中为这个列表中的数千对做这个尝试是失败的.在下面的示例中,headinglist是上面数据帧的样本,而FullcorSM是完整的相关矩阵.

for(i in headedlist$V1){
   data.frame(i, headedlist[i,2], FullcorSM[i,headedlist[i,2]])
}
Run Code Online (Sandbox Code Playgroud)

以上行是我的第一次尝试并返回null.我的第二次尝试如下所示.

for(i in 1:nrow(stagelist)){
  write.table(data.frame(stagelist$V1, stagelist$V2, FullcorSM["stagelist$V1","stagelist$V2"]),
              file="sampleout",
              sep="\t",quote=F)
}
Run Code Online (Sandbox Code Playgroud)

这会返回一个越界错误.要做第二个没有引号的FullcorSM["stagelist$V1", "stagelist$V2"]部分示例返回第一列的第二列的所有值,更接近我想要的但仍然缺少一些关于R如何解释我的矩阵/数据帧语法的知识,但它我不清楚修复是什么.有关如何进行的任何见解?

for-loop r matrix dataframe

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

R:绘图中的垂直x标签

我有一个情节,我已经介绍了垂直x轴标签las = 2.那些标签是文字.分类词.这些词太长了,它们的范围很远.我的情节中没有主要标题(不需要),因此图像顶部有足够的空间.但是我该如何改变一切呢?我找到了名为mai和的参数代码mar.但他们没有改变任何事情.

我试图通过将第三个值mar("top")设置为0 来使用mar.所以我想在顶部有0个边距.情节保持原样:/

这是我的代码(x标签的德语单词):

categories <- c("Introvertiert", "Selbstbewusst", "Kooperativ", "Ehrgeizig", 
"Einfühlsam", "Autoritär", "Temperamentvoll", "Flexibel", "Tolerant", "Teamfähig", 
"Zielorientiert", "Überheblich", "Vielseitig", "Ungeduldig", "Zuverlässig", "Eigensinnig",
 "Anpassungsfähig", "Souverän", "Selbstkritisch", "Entscheidungsfreudig", "Intelligent", 
"Kontaktfreudig", "Kreativ", "Stressresistent", "Hilfsbereit", "Emotional", 
"Kompromissbereit", "Gesellig", "Standhaft", "Pünktlich", "Unruhig", "Tatkräftig",
 "Aufgeschlossen", "Fröhlich", "Zuvorkommend", "Uneigennützig", "Selbstbeherrscht", 
"Schüchtern", "Freundlich", "Sprachgewandt")

x <- seq(1,40)
y <- seq(1,40)

plot(x,y,xaxt="n",main="", mar=c(5, 4, 0, 2) + 0.1, xlab ="")

axis(1, at=1:40, labels=categories, las = 2, cex.axis = 0.8)
Run Code Online (Sandbox Code Playgroud)

plot r shift

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

将距离矩阵作为矩阵从 R 复制到 excel 中

我在数据框 (x) 中有一个列,我想使用该dist(x$columnname)函数找到所有条目之间的成对距离。输出是一个距离矩阵,但如果我使用该writeClipboard函数将数据复制到 excel 中,我会得到所有成对距离的列表。有没有办法可以将它复制到 excel 中保持矩阵格式不变?

excel r matrix

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

数据帧中列的几个变量的Bootstrap CI

我想从一个比例来引导置信区间data.frame.我想在我的一个列中获得变量的结果.我已设法为矢量执行引导程序,但不知道如何data.frame从此处将其扩展到a .一个简化示例,将阈值设置为10并查看数据中小于10的比例.

矢量解决方案

library(boot)

vec <- abs(rnorm(1000)*10) #generate example vector

data_to_tb <- vec

tb <- function(data) {
  sum(data < 10, na.rm = FALSE)/length(data) #function for generating the proportion
}

tb(data_to_tb)

boot.out <- boot(data = data_to_tb, function(u,i) tb(u[i]),  R = 999)
quantile(boot.out$t, c(.025,.975))
Run Code Online (Sandbox Code Playgroud)

从这里开始,我想对data.frame包含两列的内容做同样的事情.data.frame如果可能的话,我希望以" (x,样本,比例,CI)列的形式返回结果" :

x    n   proportion  CI

A    xx  xx          xx
B    xx  xx          xx
C    xx  xx          xx
Run Code Online (Sandbox Code Playgroud)

如果dplyr可以使用包装会更好.以下是我的数据的简化示例:

例:

dataframe <- data.frame(x = sample(c("A","B","C"),100,replace = TRUE), …
Run Code Online (Sandbox Code Playgroud)

r function summary dataframe dplyr

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

HTML 整页缩放取决于屏幕分辨率

html在不同的显示器/分辨率上显示我的网站时遇到问题。我试图用以下脚本解决这个问题,但它不起作用。我该如何改进?

if (width <= 1280 && height <= 720) {
  document.getElementById('html').style.zoom = '50%';
Run Code Online (Sandbox Code Playgroud)
html {
	zoom: 100%;
}
Run Code Online (Sandbox Code Playgroud)

html javascript css zooming

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

R和dyplr中的数据帧重新排序(变异)

我有一个像这样的数据框架

Number  Type  Time 
4         B     10
5         B     11
5         B      9
1         B      8
8         R      7
3         R      9
4         R      5
4         R      5
Run Code Online (Sandbox Code Playgroud)

我按类型分组并希望创建一个名为"Adjusted_Time"的新列,其中包含之前的数字时间,最终的Df看起来像这样

Number  Type  Time      Adjusted_Time
4         B     10           8         
5         B     11          10
6         B      9          11
3         B      8          N/A
8         R      7           9          
7         R      9           5
6         R      5           5
5         R      5          N/A
Run Code Online (Sandbox Code Playgroud)

只要没有直接低于该数字的数字,N/A就会去.我现在想用dplyr吧

df %>% group_by(Type) %>% Mutate(Adjusted_Time = ....)
Run Code Online (Sandbox Code Playgroud)

r dataframe dplyr

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

如何使用 ggplot2 填充值(geom_line)和截距之间的空间?截距上方和下方的值的不同颜色

我想用 ggplot2 做一个图表,其中我需要截距 (=1) 和值(我通过 geom_line 连接)之间的空间/面积为红色(如果值小于 1)或绿色(如果值大于 1)。数据来自微软(自 1999 年以来的价格表现)。

数据:

require(quantmod)
require(dplyr)
require(ggplot2)

getSymbols("MSFT", from ="1999-01-01")
microsoft <- data.frame(time(MSFT), MSFT[,6]) 
microsoft$time <- as.Date(microsoft$time.MSFT., "%Y-%m-%d")

microsoft <- microsoft %>%
mutate(change = MSFT.Adjusted - first(MSFT.Adjusted),
     change.pc = change/first(MSFT.Adjusted)+1) 
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止的ggplot:

ggplot(microsoft, aes(x = time, y = change.pc)) +
  geom_line(stat = "identity") + 
  geom_hline(aes(yintercept=1), color="black") + 
  theme_bw() + 
  xlab("Jahr") + ylab("") + 
  ggtitle("Microsoft Kursentwicklung seit Januar 1999")
Run Code Online (Sandbox Code Playgroud)

我想用绿色填充 y = 1 和上面的值之间的空间,用红色填充 y = 1 和下面的值之间的空间。我尝试了 geom_ribbon、geom_area、geom_polynom,但没有任何效果。最大的问题是,它填充了绿色空间,但不是在线 y = 1 以上,但也低于在线。还有你看不到的红色……

这是我尝试过的: …

r ggplot2

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

在for循环中使用geom_line

我想先连续添加一个ggplot对象.但我不能得到以下所谓的简单代码:

数据框包含我想要绘制0到20期间的时间序列.

p <- ggplot(data=dfp, aes(x=seq(0,20,1), y=dfp) )

for (i in 1:7) {
  p <- p + geom_line(aes(y=dfp[i]))
}

p  
Run Code Online (Sandbox Code Playgroud)

for-loop r ggplot2

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