<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>lunaticsun</title>
    <link>http://lunaticsun.diandian.com/</link>
    <description>Design, Data &amp; A Story</description>
    <image>
      <title>lunaticsun</title>
      <url>http://m3.img.libdd.com/farm3/150/B1D2F1D41A29A24E2E464018A0053396_64_64.jpg</url>
      <link>http://lunaticsun.diandian.com/</link>
      <description>Design, Data &amp; A Story</description>
    </image>
    <item>
      <title>时间段的创建 R语言</title>
      <link>http://lunaticsun.diandian.com/post/2012-02-07/15623832</link>
      <description>&lt;p&gt;在管理统计中我们经常要统计的量是时间，因为时间是一项主要的成本，和人力成本有较大关系。时间段在R语言中一般使用以下函数创建。&lt;/p&gt;&lt;pre&gt;as.difftime(&amp;quot;00:30&amp;quot;, &amp;quot;%H:%M&amp;quot;)&lt;/pre&gt;&lt;p&gt;第一个参数指定时间段的数据，第二个参数指定数据表达的语义。以上函数将返回一个时间段 0 小时 30 分钟。这个数据将是一个 difftime 类型。这个数据类型能够进行简单的相加操作，比如多个 difftime 数据支持进行 sum 操作，计算时间总和。当然也可以将 difftime 数据使用 as.numeric 函数转换为数字类型。当然 difftime 类型还可以指定它的单位。比如以上函数默认将分钟作为单位，如想转换成小时，可以使用以下参数。&lt;/p&gt;&lt;pre&gt;as.difftime(&amp;quot;00:30&amp;quot;, &amp;quot;%H:%M&amp;quot;, units=&amp;quot;hours&amp;quot;)&lt;/pre&gt;</description>
      <pubDate>Tue, 07 Feb 2012 05:09:20 GMT</pubDate>
      <guid>http://lunaticsun.diandian.com/post/2012-02-07/15623832</guid>
      
    </item>
    <item>
      <title>factor分类与显示 R语言</title>
      <link>http://lunaticsun.diandian.com/post/2012-01-16/14441386</link>
      <description>&lt;p&gt;我们对数据进行分类统计时便要用到 factor 数据。一般 factor 类型的数据在数据库中都会以整数存储以节省数据库空间，这样就需要解决 factor 的分类和显示问题。假设有一个公司部门的数据 x，1代表行政部，2代表财务部，3代表销售部，我们如果只要对1和2做分类统计的话，可以使用以下方法。&lt;/p&gt;&lt;pre&gt;new_x &amp;lt;- factor(x, levels=c(1, 2))&lt;/pre&gt;&lt;p&gt;对于这样的操作，所有原来是3的数据都会被处理为 NA。假设我们还想把1和2显示成字符串。&lt;/p&gt;&lt;pre&gt;new_x &amp;lt;- factor(x, levels=c(1, 2), labels=c(&amp;quot;行政部&amp;quot;, &amp;quot;财务部&amp;quot;))&lt;/pre&gt;&lt;p&gt;labels 这个参数根据 levels 中的排序，依次将整数替换成字符串，方便显示。&lt;br /&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 16 Jan 2012 04:55:18 GMT</pubDate>
      <guid>http://lunaticsun.diandian.com/post/2012-01-16/14441386</guid>
      
    </item>
    <item>
      <title>数字vector分区间统计 R语言</title>
      <link>http://lunaticsun.diandian.com/post/2012-01-11/16922644</link>
      <description>&lt;p&gt;除了按照字符型类别去统计数据时，我们往往还需要按照数字区间进行分类统计。假设我们要按照一家公司员工的入职天数进行分类，统计不同区间的人数时，就要用到分区间的技巧。分区间一般使用 cut 函数。&lt;/p&gt;&lt;pre&gt;f &amp;lt;- cut(days, breaks=c(0, 100, 200))&lt;/pre&gt;&lt;p&gt;以上函数将入职天数 days 按照 breaks 参数设定的数字值，将 days 分为两大类，(0, 100] 和 (100, 200]。注意，默认区间最左侧值不包含，右侧值包含。如果想要包含最小值 0 ，采用如下写法。&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;f &amp;lt;- cut(days, breaks=c(0, 100, 200), include.lowest=T)&lt;/pre&gt;&lt;p&gt;cut 函数将返回一个 factor 类型数据，即可以对这类数据进行分类统计。如&lt;/p&gt;&lt;pre&gt;tapply(!is.na(days), f, sum)&lt;/pre&gt;&lt;p&gt;将分别计算入职天数在 [0, 100]和(100, 200]的人数。&lt;br /&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 11 Jan 2012 04:59:41 GMT</pubDate>
      <guid>http://lunaticsun.diandian.com/post/2012-01-11/16922644</guid>
      
    </item>
    <item>
      <title>去除当前环境所有变量 R语言</title>
      <link>http://lunaticsun.diandian.com/post/2012-01-10/16116072</link>
      <description>&lt;p&gt;使用 rm 函数能够删除当前环境中不需要的变量，假设有一个变量 x，我们不再需要它，那么可以使用&lt;/p&gt;&lt;pre&gt;rm(x)
rm(&amp;quot;x&amp;quot;)&lt;/pre&gt;&lt;p&gt;假设我们有一个 character vector，需要将其中名称的变量都删除，那么可以使用&lt;/p&gt;&lt;pre&gt;rm(list=c(&amp;quot;x&amp;quot;, &amp;quot;y&amp;quot;, &amp;quot;z&amp;quot;))&lt;/pre&gt;&lt;p&gt;极端的情况可以使用 ls() 或 objects() 函数返回当前环境中所有变量名称的 character vector。于是就有&lt;/p&gt;&lt;pre&gt;rm(list=ls())&lt;/pre&gt;&lt;p&gt;即删除所有当前环境变量。这个技巧可以用在代码开始用来防止意外的命名冲突。&lt;br /&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 10 Jan 2012 07:03:33 GMT</pubDate>
      <guid>http://lunaticsun.diandian.com/post/2012-01-10/16116072</guid>
      
    </item>
    <item>
      <title>&amp;与&amp;&amp;操作符的区别 R语言</title>
      <link>http://lunaticsun.diandian.com/post/2012-01-09/14124075</link>
      <description>&lt;p&gt;假设有一个 vector&amp;nbsp;&lt;/p&gt;&lt;pre&gt;x &amp;lt;- c(1,2,3,4,5,6,7,8,9)&lt;/pre&gt;&lt;p&gt;要找出既大于2，又小于5的部分，那么首先要做个双条件的逻辑判断。这个判断应该是&lt;/p&gt;&lt;pre&gt;x&amp;gt;2 &amp;amp; x&amp;lt;5 #FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE&lt;/pre&gt;&lt;p&gt;其中 TRUE 和 FALSE 的判断分别根据两个条件产生的 logical vector 做 &amp;amp; 操作获得。&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;x[x&amp;gt;2 &amp;amp; x&amp;lt;5] #得到值 3 4&amp;nbsp;&lt;/pre&gt;&lt;p&gt;注意不要使用 &amp;amp;&amp;amp;，因为 &amp;amp;&amp;amp; 操作符仅用于长度为1的 vector，因此它只会返回 vector 中第一项的比较结果，即 FALSE。&lt;br /&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 09 Jan 2012 04:57:31 GMT</pubDate>
      <guid>http://lunaticsun.diandian.com/post/2012-01-09/14124075</guid>
      
    </item>
    <item>
      <title>[]与[[]]操作符的区别 R语言</title>
      <link>http://lunaticsun.diandian.com/post/2012-01-08/14874139</link>
      <description>&lt;p&gt;对于不同的数据类型，[ ] 操作和 [[ ]] 操作的意义是不同的。对于一个 array 数据（如 tapply 返回的数据为 array 类型），假设我们使用 datasets 包中的默认数据 beaver1。&lt;/p&gt;&lt;p&gt;x &amp;lt;- tapply(beaver1$temp, beaver1$activ, mean)&lt;/p&gt;&lt;p&gt;返回的 x 是一个 array 类型的数据，如果用 x[1]，那么将同样&lt;strong&gt;返回一个 array 类型的数据，该数据是 x 的第一列，是一个子集&lt;/strong&gt;。如果用 x[[1]]，那么将返回 &lt;strong&gt;array 数据中的第一个数据&lt;/strong&gt;，而不是一个子集。&lt;/p&gt;&lt;p&gt;同样的当 x 的数据类型是 list 时，[]操作将返回一个 list 数据类型，且将是 x 的一个子集。如果使用 [[]] 操作，将返回 list 中的一个数据，该数据类型由本身确定，和 list 无关。对于 data.frame 数据也是如此。&lt;/p&gt;&lt;p&gt;但对于 table 和 matrix 数据类型来说，[] 与 [[]] 操作返回的数据类型均&lt;strong&gt;不是子集，而是数据本身&lt;/strong&gt;。&lt;br /&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 08 Jan 2012 03:16:38 GMT</pubDate>
      <guid>http://lunaticsun.diandian.com/post/2012-01-08/14874139</guid>
      
    </item>
    <item>
      <title>拆解字符串并逐个处理 R语言</title>
      <link>http://lunaticsun.diandian.com/post/2012-01-06/14162093</link>
      <description>&lt;p&gt;有一个字符串 vector &amp;quot;1,234,567&amp;quot;, &amp;quot;1,234&amp;quot;, &amp;quot;234&amp;quot;, &amp;quot;2,234&amp;quot; 。如果想把逗号去掉我们可以将这个字符串拆解，使用 strsplit 函数。&lt;/p&gt;&lt;pre&gt;sv &amp;lt;- c(&amp;quot;1,234,567&amp;quot;, &amp;quot;1,234&amp;quot;, &amp;quot;234&amp;quot;, &amp;quot;2,234&amp;quot;)
svl &amp;lt;- strsplit(sv, split=&amp;quot;,&amp;quot;)&lt;/pre&gt;&lt;p&gt;sv1此时返回的是一个 list 数据，list 中的每一项都变成了 sv 中每一项的一个字符串 vector。&lt;/p&gt;&lt;pre&gt;[[1]]
[1] &amp;quot;1&amp;quot; &amp;quot;234&amp;quot; &amp;quot;567&amp;quot;
[[2]]
[1] &amp;quot;1&amp;quot; &amp;quot;234&amp;quot;
[[3]]
[1] &amp;quot;234&amp;quot;
[[4]]
[1] &amp;quot;2&amp;quot; &amp;quot;234&amp;quot;&lt;/pre&gt;&lt;p&gt;因此要处理 strsplit 返回的数据就要用到 lapply。&lt;/p&gt;&lt;pre&gt;svl2 &amp;lt;- lapply(svl, paste, collapse=&amp;quot;&amp;quot;)&lt;/pre&gt;&lt;p&gt;对于 svl 中的每一项进行字符串合并，即 paste(collapse=&amp;quot;&amp;quot;) 。最后我要把 list 数据重新合并为一个字符串 vector，要用到 c。&lt;/p&gt;&lt;pre&gt;c(svl2, recursive=T)&lt;/pre&gt;&lt;p&gt;必须使用 recursive=T 这个参数去合并。得到的结果就是&lt;/p&gt;&lt;pre&gt;c(&amp;quot;1234567&amp;quot;, &amp;quot;1234&amp;quot;, &amp;quot;234&amp;quot;, &amp;quot;2234&amp;quot;)&lt;/pre&gt;</description>
      <pubDate>Fri, 06 Jan 2012 11:34:09 GMT</pubDate>
      <guid>http://lunaticsun.diandian.com/post/2012-01-06/14162093</guid>
      
    </item>
    <item>
      <title>筛选dataframe行 R语言</title>
      <link>http://lunaticsun.diandian.com/post/2012-01-05/16238099</link>
      <description>&lt;p&gt;&lt;strong&gt;使用 logical vector 筛选&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;当我们拿到一个 dataframe 数据时，往往需要筛选出一些行，比如我们要把所有含有 NA 数据的行去除掉。这时我们可以使用一个简单的操作。如&lt;/p&gt;&lt;pre&gt;data &amp;lt;- data[ &amp;lt;logical&amp;gt;, ]&lt;/pre&gt;&lt;p&gt;其中 &amp;lt;logical&amp;gt; 是一个 logical vector，他和 data 具有同样的长度，当对应的值为 FALSE 时，则会去除这一行，为 TRUE 则保留该行。看个例子&lt;/p&gt;&lt;pre&gt;data &amp;lt;- data[complete.cases(data), ]&lt;/pre&gt;&lt;p&gt;complete.cases(data) 这个函数返回一个和 data 行数一样长度的 vector，判断 data 中的每一行的数据中是否有 NA，只要有一个 NA 就返回 FALSE。通过这个函数我们把 data 的每一行中只要有一个 NA 的话，就把这一行从 data 中删除了。&lt;/p&gt;&lt;p&gt;logical vector 还可以是 data$name %in% somenames&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;使用 number vector 筛选&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;data &amp;lt;- data[c(1, 2), ]&lt;/pre&gt;&lt;p&gt;其中 c(1, 2) 代表行数，即仅返回第1、第2行。如果要返回除去第1、第2的行则使用&lt;/p&gt;&lt;pre&gt;data &amp;lt;- data[-c(1, 2), ]&lt;/pre&gt;&lt;p&gt;当筛选的 number vector 和 which 函数一起使用时，效果和 logical vector 类似。&lt;br /&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 05 Jan 2012 06:27:37 GMT</pubDate>
      <guid>http://lunaticsun.diandian.com/post/2012-01-05/16238099</guid>
      
    </item>
  </channel>
</rss>


