在a中data.frame,我有一个用于文本语言的分类变量.但是,虽然大多数文本只使用一种语言,但有些语言只有多种语言.在我的数据中,它们出现在同一列中,除以逗号:
text = c("Text1", "Text2", "Text3")
lang = c("fr", "en", "fr,en")
d = data.frame(text, lang)
Run Code Online (Sandbox Code Playgroud)
视觉:
text lang
1 Text1 fr
2 Text2 en
3 Text3 fr,en
Run Code Online (Sandbox Code Playgroud)
我想绘制每种语言的文本数量,Text3在内部fr和内部计算en.
我找到了如何拆分,用:
d$lang <- strsplit(d$lang, ",")
Run Code Online (Sandbox Code Playgroud)
但后来我无法找到正确绘制方法,例如使用qplot像这样的条形图:
qplot(lang, data=d)
Run Code Online (Sandbox Code Playgroud)
我做得对吗?有更好的方法吗?
我的问题与这个和另一个问题有很大的相似之处,但我的数据集有点不同,我似乎无法使这些解决方案有效.如果我误解了什么,请原谅我,这个问题是多余的.
我有一个这样的数据集:
df <- data.frame(
id = c(1:5),
conditionA = c(1, NA, NA, NA, 1),
conditionB = c(NA, 1, NA, NA, NA),
conditionC = c(NA, NA, 1, NA, NA),
conditionD = c(NA, NA, NA, 1, NA)
)
# id conditionA conditionB conditionC conditionD
# 1 1 1 NA NA NA
# 2 2 NA 1 NA NA
# 3 3 NA NA 1 NA
# 4 4 NA NA NA 1
# 5 5 1 NA …Run Code Online (Sandbox Code Playgroud) 我已经开始了一个小的 Python 包(基于python-telegram-bot),并且想做基于测试的开发。所以我py.test用一些基本的单元测试来激活。
但是我总是收到错误消息,setup.py因为它需要一个命令作为参数,但py.test不提供任何命令。
这是 的缩短版本setup.py:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from setuptools import setup
requirements = [
'python-telegram-bot>=5.3.0'
]
test_requirements = [
'pytest>=3.0'
]
setup(
name='project',
version='0.1.0',
packages=[
'project',
],
package_dir={'project':
'project'},
entry_points={
'console_scripts': [
'project=project.cli:main'
]
},
include_package_data=True,
install_requires=requirements,
license="MIT license",
zip_safe=False,
test_suite='tests',
tests_require=test_requirements
)
Run Code Online (Sandbox Code Playgroud)
而py.test结果:
=========================== test session starts ==========================
platform darwin -- Python 3.6.0, pytest-3.0.6, py-1.4.32, pluggy-0.4.0
rootdir: ~/dev/project, inifile: pytest.ini
collected …Run Code Online (Sandbox Code Playgroud) 我试图在数据框内将字符向量分成三个不同的向量.
我的数据类似于:
> df <- data.frame(filename = c("Author1 (2010) Title of paper",
"Author2 et al (2009) Title of paper",
"Author3 & Author4 (2004) Title of paper"),
stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)
我想这3个信息(拆分authors,year,title)分成三个不同的列,所以,这将是:
> df
filename author year title
1 Author1 (2010) Title1 Author1 2010 Title1
2 Author2 et al (2009) Title2 Author2 et al 2009 Title2
3 Author3 & Author4 (2004) Title3 Author3 & Author4 2004 Title3
Run Code Online (Sandbox Code Playgroud)
我习惯在3个元素的向量中strsplit分割每个filename元素:
df$temp <- strsplit(df$filename, " …Run Code Online (Sandbox Code Playgroud) 我想初始化一个User具有属性的类,其值取自一组有限且不可变的可能值(例如,用户类型、国家/地区的简短列表......)。在 Python 中做到这一点的最佳方法是什么?
class User(object):
def __init__(self, type, country):
self.type = type # Possible values: [Consumer, Producer]
self.country = country # Possible values: [UK, USA, Japan, France]
Run Code Online (Sandbox Code Playgroud)
这可能是显而易见的,但我正式限制这组可能值的原因主要是为了避免/发现错误。
我已经查看了 Python上list和EnumPython中的各种解释(例如,如何在 Python 中实现枚举),但我不确定考虑到我的需求,这是否是正确的方法。特别是,从我读过的内容来看,似乎Enum是存储一个常量列表(User.typeasCONSUMER和PRODUCER)......但我希望能够直接在输出中使用这些值(所以大写看起来很奇怪)。而且我不确定每个值是否有等价的数字(CONSUMER=1 ...) 的对我有用。
编辑:我可能应该补充一点,我的应用程序中的实际值是法语,因此包括非 ASCII 字符(例如,États-Unis)。走这Enum条路似乎无法保留这些字符,并且意味着然后将值“转换”为“本地化”值,这在我看来对于一个简短的列表来说很麻烦。